WorkflowApplication.Run WorkflowApplication.Run WorkflowApplication.Run WorkflowApplication.Run Method

Определение

Начинает или возобновляет выполнение экземпляра рабочего процесса.Begins or resumes the execution of a workflow instance.

Перегрузки

Run() Run() Run() Run()

Начинает или возобновляет выполнение экземпляра рабочего процесса.Begins or resumes the execution of a workflow instance.

Run(TimeSpan) Run(TimeSpan) Run(TimeSpan) Run(TimeSpan)

Начинает или возобновляет выполнение экземпляра рабочего процесса с использованием указанного интервала времени ожидания.Begins or resumes the execution of a workflow instance using the specified time-out interval.

Комментарии

Этот метод вызывается для инициализации выполнения вновь созданного экземпляра рабочего процесса.Call this method to initiate execution of a newly created workflow instance.

Run() Run() Run() Run()

Начинает или возобновляет выполнение экземпляра рабочего процесса.Begins or resumes the execution of a workflow instance.

public:
 void Run();
public void Run ();
member this.Run : unit -> unit
Public Sub Run ()

Примеры

В следующем примере рабочий процесс размещается с помощью WorkflowApplication.The following example hosts a workflow using WorkflowApplication. Создается экземпляр WorkflowApplication с использованием указанного определения рабочего процесса, обрабатываются нужные события жизненного цикла рабочего процесса и вызывается рабочий процесс методом Run.A WorkflowApplication instance is constructed using the specified workflow definition, the desired workflow lifecycle events are handled, and the workflow is invoked with a call to Run. После завершения рабочего процесса на консоль выводятся следующие данные.When the workflow is completed, the following output is displayed to the console.

Starting the workflow.   
Workflow 593976e8-558d-4989-94d6-50a14b34fd7b Idle.   
Ending the workflow.   
Workflow 593976e8-558d-4989-94d6-50a14b34fd7b Completed  
Workflow 593976e8-558d-4989-94d6-50a14b34fd7b Unloaded.  
Activity wf = new Sequence
{
    Activities =
     {
         new WriteLine
         {
             Text = "Starting the workflow."
         },
         new Delay
         {
             Duration = TimeSpan.FromSeconds(5)
         },
         new WriteLine
         {
             Text = "Ending the workflow."
         }
     }
};

// Create a WorkflowApplication instance.
WorkflowApplication wfApp = new WorkflowApplication(wf);

// Subscribe to any desired workflow lifecycle events.
wfApp.Completed = delegate(WorkflowApplicationCompletedEventArgs e)
{
    if (e.CompletionState == ActivityInstanceState.Faulted)
    {
        Console.WriteLine("Workflow {0} Terminated.", e.InstanceId);
        Console.WriteLine("Exception: {0}\n{1}",
            e.TerminationException.GetType().FullName,
            e.TerminationException.Message);
    }
    else if (e.CompletionState == ActivityInstanceState.Canceled)
    {
        Console.WriteLine("Workflow {0} Canceled.", e.InstanceId);
    }
    else
    {
        Console.WriteLine("Workflow {0} Completed.", e.InstanceId);

        // Outputs can be retrieved from the Outputs dictionary,
        // keyed by argument name.
        // Console.WriteLine("The winner is {0}.", e.Outputs["Winner"]);
    }
};

wfApp.Aborted = delegate(WorkflowApplicationAbortedEventArgs e)
{
    // Display the exception that caused the workflow
    // to abort.
    Console.WriteLine("Workflow {0} Aborted.", e.InstanceId);
    Console.WriteLine("Exception: {0}\n{1}",
        e.Reason.GetType().FullName,
        e.Reason.Message);
};

wfApp.Idle = delegate(WorkflowApplicationIdleEventArgs e)
{
    // Perform any processing that should occur
    // when a workflow goes idle. If the workflow can persist,
    // both Idle and PersistableIdle are called in that order.
    Console.WriteLine("Workflow {0} Idle.", e.InstanceId);
};

wfApp.PersistableIdle = delegate(WorkflowApplicationIdleEventArgs e)
{
    // Instruct the runtime to persist and unload the workflow
    return PersistableIdleAction.Unload;
};

wfApp.Unloaded = delegate(WorkflowApplicationEventArgs e)
{
    Console.WriteLine("Workflow {0} Unloaded.", e.InstanceId);
};

wfApp.OnUnhandledException = delegate(WorkflowApplicationUnhandledExceptionEventArgs e)
{
    // Display the unhandled exception.
    Console.WriteLine("OnUnhandledException in Workflow {0}\n{1}",
        e.InstanceId, e.UnhandledException.Message);

    Console.WriteLine("ExceptionSource: {0} - {1}",
        e.ExceptionSource.DisplayName, e.ExceptionSourceInstanceId);

    // Instruct the runtime to terminate the workflow.
    // Other choices are Abort and Cancel
    return UnhandledExceptionAction.Terminate;
};

// Run the workflow.
wfApp.Run();

Комментарии

Этот метод вызывается для инициализации выполнения вновь созданного экземпляра рабочего процесса.Call this method to initiate execution of a newly created workflow instance.

Если операция выполнения не завершается в течение 30 секунд, то вызывается исключение TimeoutException.If the run operation does not complete within 30 seconds, a TimeoutException is thrown.

Run(TimeSpan) Run(TimeSpan) Run(TimeSpan) Run(TimeSpan)

Начинает или возобновляет выполнение экземпляра рабочего процесса с использованием указанного интервала времени ожидания.Begins or resumes the execution of a workflow instance using the specified time-out interval.

public:
 void Run(TimeSpan timeout);
public void Run (TimeSpan timeout);
member this.Run : TimeSpan -> unit
Public Sub Run (timeout As TimeSpan)

Параметры

timeout
TimeSpan TimeSpan TimeSpan TimeSpan

Этот метод вызывается для инициализации выполнения вновь созданного экземпляра рабочего процесса.Call this method to initiate execution of a newly created workflow instance.

Интервал, в течение которого операция выполнения должна завершиться до отмены операции и создания исключения TimeoutException.The interval in which the run operation must complete before the operation is canceled and a TimeoutException is thrown.

Примеры

В следующем примере рабочий процесс размещается с помощью WorkflowApplication.The following example hosts a workflow using WorkflowApplication. Создается экземпляр WorkflowApplication с использованием указанного определения рабочего процесса, обрабатываются нужные события жизненного цикла рабочего процесса и вызывается рабочий процесс методом Run.A WorkflowApplication instance is constructed using the specified workflow definition, the desired workflow lifecycle events are handled, and the workflow is invoked with a call to Run. После завершения рабочего процесса на консоль выводятся следующие данные.When the workflow is completed, the following output is displayed to the console.

Starting the workflow.   
Workflow 593976e8-558d-4989-94d6-50a14b34fd7b Idle.   
Ending the workflow.   
Workflow 593976e8-558d-4989-94d6-50a14b34fd7b Completed  
Workflow 593976e8-558d-4989-94d6-50a14b34fd7b Unloaded.  
Activity wf = new Sequence
{
    Activities =
     {
         new WriteLine
         {
             Text = "Starting the workflow."
         },
         new Delay
         {
             Duration = TimeSpan.FromSeconds(5)
         },
         new WriteLine
         {
             Text = "Ending the workflow."
         }
     }
};

// Create a WorkflowApplication instance.
WorkflowApplication wfApp = new WorkflowApplication(wf);

// Subscribe to any desired workflow lifecycle events.
wfApp.Completed = delegate(WorkflowApplicationCompletedEventArgs e)
{
    if (e.CompletionState == ActivityInstanceState.Faulted)
    {
        Console.WriteLine("Workflow {0} Terminated.", e.InstanceId);
        Console.WriteLine("Exception: {0}\n{1}",
            e.TerminationException.GetType().FullName,
            e.TerminationException.Message);
    }
    else if (e.CompletionState == ActivityInstanceState.Canceled)
    {
        Console.WriteLine("Workflow {0} Canceled.", e.InstanceId);
    }
    else
    {
        Console.WriteLine("Workflow {0} Completed.", e.InstanceId);

        // Outputs can be retrieved from the Outputs dictionary,
        // keyed by argument name.
        // Console.WriteLine("The winner is {0}.", e.Outputs["Winner"]);
    }
};

wfApp.Aborted = delegate(WorkflowApplicationAbortedEventArgs e)
{
    // Display the exception that caused the workflow
    // to abort.
    Console.WriteLine("Workflow {0} Aborted.", e.InstanceId);
    Console.WriteLine("Exception: {0}\n{1}",
        e.Reason.GetType().FullName,
        e.Reason.Message);
};

wfApp.Idle = delegate(WorkflowApplicationIdleEventArgs e)
{
    // Perform any processing that should occur
    // when a workflow goes idle. If the workflow can persist,
    // both Idle and PersistableIdle are called in that order.
    Console.WriteLine("Workflow {0} Idle.", e.InstanceId);
};

wfApp.PersistableIdle = delegate(WorkflowApplicationIdleEventArgs e)
{
    // Instruct the runtime to persist and unload the workflow
    return PersistableIdleAction.Unload;
};

wfApp.Unloaded = delegate(WorkflowApplicationEventArgs e)
{
    Console.WriteLine("Workflow {0} Unloaded.", e.InstanceId);
};

wfApp.OnUnhandledException = delegate(WorkflowApplicationUnhandledExceptionEventArgs e)
{
    // Display the unhandled exception.
    Console.WriteLine("OnUnhandledException in Workflow {0}\n{1}",
        e.InstanceId, e.UnhandledException.Message);

    Console.WriteLine("ExceptionSource: {0} - {1}",
        e.ExceptionSource.DisplayName, e.ExceptionSourceInstanceId);

    // Instruct the runtime to terminate the workflow.
    // Other choices are Abort and Cancel
    return UnhandledExceptionAction.Terminate;
};

// Run the workflow.
wfApp.Run();

Комментарии

Обратите внимание, что в отличие от Invoke этот метод завершается по истечении времени ожидания только в том случае, если рабочий процесс не запустился за указанное время, а не при необходимости завершения, когда истекло указанное время.Note that unlike Invoke, this method will time out only if the workflow doesn't start in the specified amount of time, rather than needing to complete in the specified amount of time. Причина этого заключается в том, что метод Invoke выполняется синхронно (блокируя основной поток), тогда как метод Run выполняется асинхронно, блокируя основной поток только на то время, которое требуется для запуска рабочего процесса.The reason for this is that Invoke executes the workflow synchronously (blocking the host thread), while Run executes asynchronously, only blocking the host thread for the amount of time it takes the workflow to start.

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