Provides data for workflow events.
Assembly: System.Workflow.Runtime (in System.Workflow.Runtime.dll)
Gets the workflow instance associated with the workflow event.
Determines whether the specified object is equal to the current object.(Inherited from Object.)
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.)
Serves as the default hash function. (Inherited from Object.)
Returns a string that represents the current object.(Inherited from Object.)
This material discusses types and namespaces that are obsolete. For more information, see Deprecated Types in Windows Workflow Foundation 4.5.
Workflow events are associated with a workflow instance. A WorkflowInstance associated with the workflow event. A or an object that derives from the class provides the data for all of the workflow events in the WorkflowRuntime class. is the base class for WorkflowCompletedEventArgs, WorkflowSuspendedEventArgs, and WorkflowTerminatedEventArgs.contains the
The following code example demonstrates how to obtain a WorkflowInstance object using the WorkflowInstance property when an event handler method is called. When the WorkflowIdled event occurs, the OnWorkflowIdled method defined in this example is called. It determines which workflow is idled using the WorkflowInstance property and then gets a collection of queued items for the workflow instance by calling the GetWorkflowQueueData method. The code iterates over the collection to determine which activity is waiting for the event that idled the workflow. It then sends an exception to the workflow queue using the EnqueueItem method along with the name of the event queue item.
This code example is part of the Canceling a Workflow SDK Sample from the Program.cs file. For more information, see Canceling a Workflow.
Shared Sub OnWorkflowIdled(ByVal sender As Object, ByVal e As WorkflowEventArgs) Dim workflow As WorkflowInstance = e.WorkflowInstance Console.WriteLine(vbCrLf + "...waiting for 3 seconds... " + vbCrLf) Thread.Sleep(3000) ' what activity is blocking the workflow Dim wqi As ReadOnlyCollection(Of WorkflowQueueInfo) = workflow.GetWorkflowQueueData() For Each q As WorkflowQueueInfo In wqi Dim eq As EventQueueName = TryCast(q.QueueName, EventQueueName) If eq IsNot Nothing Then ' get activity that is waiting for event Dim blockedActivity As ReadOnlyCollection(Of String) = q.SubscribedActivityNames Console.WriteLine("Host: Workflow is blocked on " + blockedActivity(0)) ' this event is never going to arrive eg. employee left the company ' lets send an exception to this queue ' it will either be handled by exception handler that was modeled in workflow ' or the runtime will unwind running compensation handlers and exit the workflow Console.WriteLine("Host: This event is not going to arrive") Console.WriteLine("Host: Cancel workflow with unhandled exception") workflow.EnqueueItem(q.QueueName, New Exception("ExitWorkflowException"), Nothing, Nothing) End If Next End Sub
Available since 3.0
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.