WorkflowInstance.EnqueueItemOnIdle Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
İş akışı boşta olduğunda belirtilen iş akışı kuyruğuna bir ileti gönderir. EnqueueItemOnIdle(IComparable, Object, IPendingWork, Object) , iş akışı bir boşta noktasına ulaşana kadar bekler ve iş akışı zamanlayıcısının boşta olduğunu doğruladıktan sonra (yani etkin bir işlem yürütülmeden) sıraya alınır.
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)
Parametreler
- queueName
- IComparable
WorkflowQueue öğesinin adı.
- item
- Object
Sıraya almak için nesne.
- pendingWork
- IPendingWork
IPendingWork Teslim edildiğinde item
gönderenin bilgilendirilmesini sağlayan bir.
- workItem
- Object
Yöntemlere geçirilecek IPendingWork bir nesne.
Özel durumlar
queueName
null başvurudur (Nothing
Visual Basic).
İş akışı çalışma zamanı altyapısı çalışmıyor.
-veya- İş akışı örneği askıya alınır.
-veya-
tarafından WorkflowQueue belirtilen queueName
yok.
-veya-
tarafından WorkflowQueue belirtilen queueName
etkin değil.
Örnekler
Aşağıdaki örnek, yöntemini kullanarak bir iş akışı örneğine bilgi göndermeyi EnqueueItemOnIdle
gösterir. İlk olarak bir WorkflowInstance nesnesi oluşturulur ve başlatılır; ardından arabirimini uygulayan IPendingWork bir nesne oluşturulur. EnqueueItemOnIdle
daha sonra çağrılır ve kuyruk adı, sıraya alınan öğe ve pendingWork nesnesinin yöntemlerine geçirilecek iş öğesi için dize değerlerini geçirir.
// 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")
Açıklamalar
İş akışı örneğinin boşta olmasını bekler ve ardından öğesini item
belirtilen WorkflowQueueöğesine gönderir. İş akışı örneği askıya alınırken çağrısı EnqueueItemOnIdle yaparsanız, iş akışı çalışma zamanı altyapısı bir InvalidOperationExceptionoluşturur. İleti teslim edildiğinde bildirim almak istiyorsanız, hizmetinize uygulayabilir IPendingWork ve öğesine bir workItem
ve nesnesi IPendingWork EnqueueItemgeçirebilirsiniz. Böyle bir bildirim istemiyorsanız ve workItem
için pendingWork
null başvuru (Nothing
Visual Basic içinde) geçirebilirsiniz.
Bu yöntemi bir durum makinesi iş akışıyla kullanırken, "'' kuyruğu{0} etkinleştirilmedi" iletisini içeren bir özel durum alabilirsiniz. Durum makinesinin geçerli durumu belirli bir olayı nasıl işleyeceklerini bilmediğinde bu durum oluşur. Örneğin, geçerli durumdan başka bir durum ''{0} kuyruğu tarafından temsil edilen öğesini içeren değerini içerdiğinde.EventDrivenActivity HandleExternalEventActivity