WorkflowInstance.EnqueueItemOnIdle Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Odešle zprávu do zadané fronty pracovního postupu, když je pracovní postup nečinný. EnqueueItemOnIdle(IComparable, Object, IPendingWork, Object) čeká, dokud pracovní postup nedosáhne nečinného bodu a po ověření, že plánovač pracovního postupu je nečinný (tj. nespustí se žádná aktivní operace).
public:
void EnqueueItemOnIdle(IComparable ^ queueName, System::Object ^ item, System::Workflow::Runtime::IPendingWork ^ pendingWork, System::Object ^ workItem);
public void EnqueueItemOnIdle (IComparable queueName, object item, System.Workflow.Runtime.IPendingWork pendingWork, object workItem);
member this.EnqueueItemOnIdle : IComparable * obj * System.Workflow.Runtime.IPendingWork * obj -> unit
Public Sub EnqueueItemOnIdle (queueName As IComparable, item As Object, pendingWork As IPendingWork, workItem As Object)
Parametry
- queueName
- IComparable
Název procesu WorkflowQueue.
- item
- Object
Objekt, který se má vytvořit do fronty.
- pendingWork
- IPendingWork
To IPendingWork umožňuje odesílateli dostávat oznámení při item
doručení.
- workItem
- Object
Objekt, který se má předat metodám IPendingWork .
Výjimky
queueName
je odkaz na hodnotu null (Nothing
v Visual Basic).
Modul runtime pracovního postupu není spuštěný.
-nebo- Instance pracovního postupu je pozastaveno.
-nebo-
Zadaný WorkflowQueue uživatelem queueName
neexistuje.
-nebo-
Zadané WorkflowQueue uživatelem queueName
není povoleno.
Příklady
Následující příklad ukazuje odeslání informací do instance pracovního postupu pomocí EnqueueItemOnIdle
metody. Nejprve se vytvoří a spustí objekt WorkflowInstance; Dále se vytvoří objekt, který implementuje IPendingWork rozhraní. EnqueueItemOnIdle
se pak volá, předává řetězcové hodnoty pro název fronty, zařaděnou položku a pracovní položku, která se má předat metodám čekajícíhowork objektu.
// Create a workflow runtime environment
WorkflowRuntime workflowRuntime = new WorkflowRuntime();
// Create a new instance of the out-of-box SqlWorkflowPersistenceService.
// Use the non-locking constructor, since we're only creating a single Workflow Runtime.
NameValueCollection parameters = new NameValueCollection();
parameters.Add("ConnectionString",
"Initial Catalog=SqlPersistenceService;Data Source=localhost;Integrated Security=SSPI;");
//Set UnloadOnIdle to true, so that the service will persist the workflow
parameters.Add("UnloadOnIdle", "true");
SqlWorkflowPersistenceService persistenceService =
new SqlWorkflowPersistenceService(parameters);
// Add the service to the runtime
workflowRuntime.AddService(persistenceService);
// Create a WorkflowInstance object
WorkflowInstance workflowInstance = workflowRuntime.CreateWorkflow(typeof(Workflow1));
// Start the instance
workflowInstance.Start();
// Create an instance of a class that implements IPendingWork for notification
PendingService pendingWork = new PendingService();
// Send the workflow the message
workflowInstance.EnqueueItemOnIdle("ActionQueue", "StartWork", pendingWork, "ActionItem");
' Create a workflow runtime environment
Dim workflowRuntime As New WorkflowRuntime()
' Create a new instance of the out-of-box SqlWorkflowPersistenceService.
' Use the non-locking constructor, since we're only creating a single Workflow Runtime.
Dim parameters As New NameValueCollection()
parameters.Add("ConnectionString", _
"Initial Catalog=SqlPersistenceServiceData Source=localhostIntegrated Security=SSPI")
'Set UnloadOnIdle to true, so that the service will persist the workflow
parameters.Add("UnloadOnIdle", "true")
Dim persistenceService As _
New SqlWorkflowPersistenceService(parameters)
' Add the service to the runtime
workflowRuntime.AddService(persistenceService)
' Create a WorkflowInstance object
Dim workflowInstance As WorkflowInstance = workflowRuntime.CreateWorkflow(GetType(Workflow1))
' Start the instance
workflowInstance.Start()
' Create an instance of a class that implements IPendingWork for notification
Dim pendingWork As New PendingService()
' Send the workflow the message
workflowInstance.EnqueueItemOnIdle("ActionQueue", "StartWork", pendingWork, "ActionItem")
Poznámky
Počká, až se instance pracovního postupu stane nečinnou, a odešle item
ji zadanému WorkflowQueue. Pokud zavoláte EnqueueItemOnIdle , když je instance pracovního postupu pozastavena, modul runtime pracovního postupu vyvolá InvalidOperationExceptionchybu . Pokud chcete být upozorněni při doručení zprávy, můžete implementovat IPendingWork ve své službě a předat workItem
objekt a IPendingWork objekt .EnqueueItem Pokud takové oznámení nechcete, můžete předat nulový odkaz (Nothing
v Visual Basic) pro pendingWork
a workItem
.
Pokud používáte tuto metodu s pracovním postupem stavového počítače, může dojít k výjimce, která obsahuje zprávu "Fronta '{0} není povolena". K tomu dochází v případě, že aktuální stav stavového počítače neví, jak zpracovat konkrétní událost. Pokud například nějaký jiný stav než aktuální stav obsahuje EventDrivenActivity ten, který HandleExternalEventActivity je reprezentován frontou "{0}".