WorkflowEventArgs Класс

Определение

Предупреждение

Этот API устарел.

Предоставляет данные для событий рабочего процесса.Provides data for workflow events.

public ref class WorkflowEventArgs : EventArgs
[System.Obsolete("The System.Workflow.* types are deprecated.  Instead, please use the new types from System.Activities.*")]
public class WorkflowEventArgs : EventArgs
type WorkflowEventArgs = class
    inherit EventArgs
Public Class WorkflowEventArgs
Inherits EventArgs
Наследование
WorkflowEventArgs
Производный
Атрибуты

Примеры

В следующем примере кода показано, как получить объект WorkflowInstance, используя свойство WorkflowInstance при вызове метода обработчика событий.The following code example demonstrates how to obtain a WorkflowInstance object using the WorkflowInstance property when an event handler method is called. При возникновении события WorkflowIdled вызывается метод OnWorkflowIdled, определенный в этом примере.When the WorkflowIdled event occurs, the OnWorkflowIdled method defined in this example is called. Он определяет, какой рабочий процесс бездействует, используя свойство WorkflowInstance, а затем возвращает коллекцию элементов, находящихся в очереди экземпляра рабочего потока, вызывая метод GetWorkflowQueueData.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. После этого он отправляет исключение в очередь рабочего процесса, используя метод EnqueueItem с именем элемента очереди событий.It then sends an exception to the workflow queue using the EnqueueItem method along with the name of the event queue item.

Данный пример кода является частью примера SDK «Canceling a Workflow» из файла Program.cs.This code example is part of the Canceling a Workflow SDK Sample from the Program.cs file. Дополнительные сведения см. в разделе Отмена рабочего процесса.For more information, see Canceling a Workflow.

static void OnWorkflowIdled(object sender, WorkflowEventArgs e)
{
    WorkflowInstance workflow = e.WorkflowInstance;

    Console.WriteLine("\n...waiting for 3 seconds... \n");
    Thread.Sleep(3000);

    // what activity is blocking the workflow
    ReadOnlyCollection<WorkflowQueueInfo> wqi = workflow.GetWorkflowQueueData();
    foreach (WorkflowQueueInfo q in wqi)
    {
        EventQueueName eq = q.QueueName as EventQueueName;
        if (eq != null)
        {
            // get activity that is waiting for event
            ReadOnlyCollection<string> blockedActivity = 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"), null, null);
        }
    }
}
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

Комментарии

Примечание

В этом материале обсуждаются устаревшие типы и пространства имен.This material discusses types and namespaces that are obsolete. Дополнительные сведения см. в статье о нерекомендуемых типах в Windows Workflow Foundation 4.5.For more information, see Deprecated Types in Windows Workflow Foundation 4.5.

События рабочего процесса связаны с экземпляром рабочего процесса.Workflow events are associated with a workflow instance. Объект WorkflowEventArgs содержит экземпляр WorkflowInstance, связанный с событием рабочего процесса.A WorkflowEventArgs contains the WorkflowInstance associated with the workflow event. Класс WorkflowEventArgs или объект, производный от класса WorkflowEventArgs, предоставляет данные для всех событий рабочего процесса в классе WorkflowRuntime.A WorkflowEventArgs or an object that derives from the WorkflowEventArgs class provides the data for all of the workflow events in the WorkflowRuntime class. WorkflowEventArgs — это базовый класс для WorkflowCompletedEventArgs, WorkflowSuspendedEventArgs и WorkflowTerminatedEventArgs.WorkflowEventArgs is the base class for WorkflowCompletedEventArgs, WorkflowSuspendedEventArgs, and WorkflowTerminatedEventArgs.

Свойства

WorkflowInstance

Возвращает экземпляр рабочего процесса, связанный с событием рабочего процесса.Gets the workflow instance associated with the workflow event.

Методы

Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)

Применяется к

Дополнительно