WorkflowApplication.Cancel Метод

Определение

Отменяет экземпляр рабочего процесса.

Перегрузки

Cancel()

Отменяет экземпляр рабочего процесса.

Cancel(TimeSpan)

Отменяет экземпляр рабочего процесса, используя указанный интервал времени ожидания.

Комментарии

Этот метод планирует отмену экземпляра рабочего процесса. Чтобы получить уведомление о выполнении отмены, воспользуйтесь обработчиком Completed.

По умолчанию операция отмены должна быть завершена в течение 30 секунд, в противном случае будет сформировано исключение TimeoutException.

Cancel()

Отменяет экземпляр рабочего процесса.

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

Примеры

В следующем примере рабочий процесс размещается с помощью WorkflowApplication. Создается экземпляр WorkflowApplication с использованием указанного определения рабочего процесса, обрабатываются нужные события жизненного цикла рабочего процесса и вызывается рабочий процесс методом Run. После запуска рабочего процесса вызывается метод Cancel. После отмены рабочего процесса на консоль выводятся следующие данные.

Starting the workflow.   
Workflow bcce00c2-d323-42c2-8c25-19ff0c4b6dac Idle.   
Workflow bcce00c2-d323-42c2-8c25-19ff0c4b6dac Canceled  
Workflow bcce00c2-d323-42c2-8c25-19ff0c4b6dac 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);
    }
};

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

Thread.Sleep(TimeSpan.FromSeconds(1));

wfApp.Cancel();

Комментарии

Этот метод планирует отмену экземпляра рабочего процесса. Чтобы получить уведомление о выполнении отмены, используйте обработчик Completed.

По умолчанию операция отмены должна быть завершена в течение 30 секунд, в противном случае будет сформировано исключение TimeoutException.

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

Cancel(TimeSpan)

Отменяет экземпляр рабочего процесса, используя указанный интервал времени ожидания.

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

Параметры

timeout
TimeSpan

Период времени, в течение которого операция отмены должна быть завершена, прежде чем она будет отменена с формированием исключения TimeoutException.

Примеры

В следующем примере рабочий процесс размещается с помощью WorkflowApplication. Создается экземпляр WorkflowApplication с использованием указанного определения рабочего процесса, обрабатываются нужные события жизненного цикла рабочего процесса и вызывается рабочий процесс методом Run. После запуска рабочего процесса вызывается метод Cancel. После отмены рабочего процесса на консоль выводятся следующие данные.

Starting the workflow.   
Workflow bcce00c2-d323-42c2-8c25-19ff0c4b6dac Idle.   
Workflow bcce00c2-d323-42c2-8c25-19ff0c4b6dac Canceled  
Workflow bcce00c2-d323-42c2-8c25-19ff0c4b6dac 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);
    }
};

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

Thread.Sleep(TimeSpan.FromSeconds(1));

wfApp.Cancel();

Комментарии

Этот метод планирует отмену экземпляра рабочего процесса. Чтобы получить уведомление о выполнении отмены, используйте обработчик Completed.

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