WorkflowInstance.EnqueueItem 方法

定義

同步地將訊息貼入指定的工作流程佇列。

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 物件。

例外狀況

是一個空參考()。

工作流程執行引擎沒有在執行。

-或-

WorkflowQueue所指定的 不queueName存在。

-或-

WorkflowQueue指定的 by queueName 並未啟用。

備註

item 傳送至 指定的 WorkflowQueue。 如果你想在訊息送達時收到通知,可以在服務中實作 IPendingWork a workItemIPendingWork 物件給 EnqueueItem。 如果你不想要這樣的通知,可以對 NothingpendingWork 傳送空參考(workItem 在 Visual Basic)。

當使用此方法搭配狀態機工作流程時,可能會遇到異常訊息,顯示「佇列 '{0}' 未啟用」。當狀態機目前狀態無法處理特定事件時,就會發生這種情況。 例如,當某個非當前狀態包含 時 EventDrivenActivity ,該狀態 HandleExternalEventActivity 包含 ,即由佇列 '{0}' 表示。

Note

訊息不保證會依照發送順序被工作流程實例接收。 例如,若在現有佇列(Queue A)收到訊息後,工作流程會建立另一個佇列(Queue B),該佇列會監聽第一則訊息之後再發送的訊息,那麼第二則訊息可能會先到達,但因為其佇列尚未建立而無法接收。 為避免此問題,第二則訊息不應在驗證第二個隊列存在之前發送(使用 GetWorkflowQueueData.)

適用於