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 方法的对象。

例外

queueName是空引用(Visual Basic 中的 Nothing)。

工作流运行时引擎未运行。

-或-

指定 WorkflowQueuequeueName 不存在。

-或-

WorkflowQueue未启用指定者queueName

注解

将它 item 发送到指定的 WorkflowQueue。 如果要在传递消息时收到通知,可以在服务中实现 IPendingWork 并将 a workItem 和对象 IPendingWork 传递给 EnqueueItem。 如果不希望此类通知,可以传递 pendingWork Visual Basic 和 workItem 的 null 引用(Nothing)。

将此方法用于状态机工作流时,可能会收到消息“未启用队列''{0}”的异常。当状态机的当前状态不知道如何处理特定事件时,将发生这种情况。 例如,当当前状态以外的某些状态包含EventDrivenActivity包含队列“”{0}所表示的状态HandleExternalEventActivity时。

注释

不保证消息按发送顺序由工作流实例接收。 例如,如果收到现有队列(队列 A)中的消息会导致工作流创建另一个队列(队列 B),然后侦听第一条消息后发送的另一条消息,则第二条消息可能先到达,并且由于尚未创建队列而无法接收。 为防止此问题,在验证第二个队列的存在(使用 GetWorkflowQueueData.) 之前,不应发送第二条消息。

适用于