WorkflowInstance.EnqueueItem Metodo

Definizione

Invia un messaggio alla coda del flusso di lavoro specificata in modo sincrono.

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)

Parametri

queueName
IComparable

Nome del WorkflowQueue.

item
Object

Oggetto da accodare.

pendingWork
IPendingWork

Oggetto IPendingWork che consente al mittente di ricevere una notifica quando item viene recapitato.

workItem
Object

Oggetto da passare ai IPendingWork metodi.

Eccezioni

queueName è un riferimento Null (Nothing in Visual Basic).

Il motore di runtime del flusso di lavoro non è in esecuzione.

oppure

L'oggetto WorkflowQueue specificato da queueName non esiste.

oppure

L'oggetto WorkflowQueue specificato da queueName non è abilitato.

Commenti

Invia l'oggetto item all'oggetto specificato WorkflowQueue. Se si vuole ricevere una notifica quando il messaggio viene recapitato, è possibile implementare IPendingWork nel servizio e passare un workItem oggetto e IPendingWork a EnqueueItem. Se non si desidera tale notifica, è possibile passare un riferimento Null (Nothing in Visual Basic) per pendingWork e workItem.

Quando si usa questo metodo con un flusso di lavoro della macchina a stati, è possibile che venga visualizzata un'eccezione con il messaggio "Coda '{0}' non abilitato". Ciò si verifica quando lo stato corrente della macchina a stati non sa come gestire un evento specifico. Ad esempio, quando uno stato diverso dallo stato corrente contiene l'oggetto EventDrivenActivity che contiene l'oggetto HandleExternalEventActivity rappresentato dalla coda '{0}'.

Note

Non è garantito che i messaggi vengano ricevuti dall'istanza del flusso di lavoro nell'ordine in cui sono stati inviati. Ad esempio, se si riceve un messaggio in una coda esistente (Coda A) un flusso di lavoro crea un'altra coda (coda B), che quindi rimane in ascolto di un altro messaggio inviato dopo il primo messaggio, è possibile che il secondo messaggio arrivi per primo e non venga ricevuto a causa della mancata creazione della coda. Per evitare questo problema, il secondo messaggio non deve essere inviato fino a quando non viene verificata la presenza della seconda coda (tramite GetWorkflowQueueData.)

Si applica a