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 方法的对象。
例外
queueName是空引用(Visual Basic 中的 Nothing)。
注解
将它 item 发送到指定的 WorkflowQueue。 如果要在传递消息时收到通知,可以在服务中实现 IPendingWork 并将 a workItem 和对象 IPendingWork 传递给 EnqueueItem。 如果不希望此类通知,可以传递 pendingWork Visual Basic 和 workItem 的 null 引用(Nothing)。
将此方法用于状态机工作流时,可能会收到消息“未启用队列''{0}”的异常。当状态机的当前状态不知道如何处理特定事件时,将发生这种情况。 例如,当当前状态以外的某些状态包含EventDrivenActivity包含队列“”{0}所表示的状态HandleExternalEventActivity时。
注释
不保证消息按发送顺序由工作流实例接收。 例如,如果收到现有队列(队列 A)中的消息会导致工作流创建另一个队列(队列 B),然后侦听第一条消息后发送的另一条消息,则第二条消息可能先到达,并且由于尚未创建队列而无法接收。 为防止此问题,在验证第二个队列的存在(使用 GetWorkflowQueueData.) 之前,不应发送第二条消息。