語言

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 workItem 和 IPendingWork 物件給 EnqueueItem。 如果你不想要這樣的通知,可以對 Nothing 和 pendingWork 傳送空參考(workItem 在 Visual Basic)。

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

Note

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

適用於