WorkflowInstance.EnqueueItem 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
同步地將訊息貼入指定的工作流程佇列。
public:
void EnqueueItem(IComparable ^ queueName, System::Object ^ item, System::Workflow::Runtime::IPendingWork ^ pendingWork, System::Object ^ workItem);
public void EnqueueItem(IComparable queueName, object item, System.Workflow.Runtime.IPendingWork pendingWork, object workItem);
member this.EnqueueItem : IComparable * obj * System.Workflow.Runtime.IPendingWork * obj -> unit
Public Sub EnqueueItem (queueName As IComparable, item As Object, pendingWork As IPendingWork, workItem As Object)
參數
- queueName
- IComparable
這個名稱 WorkflowQueue。
- item
- Object
要排隊的物件。
- pendingWork
- IPendingWork
這樣 IPendingWork 可以讓寄件人收到送達通知 item 。
- workItem
- Object
一個要傳遞給方法的 IPendingWork 物件。
例外狀況
備註
將 item 傳送至 指定的 WorkflowQueue。 如果你想在訊息送達時收到通知,可以在服務中實作 IPendingWork a workItem 和 IPendingWork 物件給 EnqueueItem。 如果你不想要這樣的通知,可以對 Nothing 和 pendingWork 傳送空參考(workItem 在 Visual Basic)。
當使用此方法搭配狀態機工作流程時,可能會遇到異常訊息,顯示「佇列 '{0}' 未啟用」。當狀態機目前狀態無法處理特定事件時,就會發生這種情況。 例如,當某個非當前狀態包含 時 EventDrivenActivity ,該狀態 HandleExternalEventActivity 包含 ,即由佇列 '{0}' 表示。
Note
訊息不保證會依照發送順序被工作流程實例接收。 例如,若在現有佇列(Queue A)收到訊息後,工作流程會建立另一個佇列(Queue B),該佇列會監聽第一則訊息之後再發送的訊息,那麼第二則訊息可能會先到達,但因為其佇列尚未建立而無法接收。 為避免此問題,第二則訊息不應在驗證第二個隊列存在之前發送(使用 GetWorkflowQueueData.)