WorkflowApplication.Terminate Метод

Определение

Завершает экземпляр рабочего процесса.

Перегрузки

Terminate(Exception)

Завершает экземпляр рабочего процесса, используя указанное исключение.

Terminate(String)

Завершает экземпляр рабочего процесса, используя указанное сообщение об ошибке.

Terminate(Exception, TimeSpan)

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

Terminate(String, TimeSpan)

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

Terminate(Exception)

Завершает экземпляр рабочего процесса, используя указанное исключение.

public:
 void Terminate(Exception ^ reason);
public void Terminate (Exception reason);
member this.Terminate : Exception -> unit
Public Sub Terminate (reason As Exception)

Параметры

reason
Exception

Причина завершения работы экземпляра рабочего процесса.

Примеры

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

Starting the workflow.   
Workflow e6b33409-f010-49f1-82ce-56f8baabe5e5 Terminated.  
Exception: System.ApplicationException  
Terminating the workflow.   
Workflow e6b33409-f010-49f1-82ce-56f8baabe5e5 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.Unloaded = delegate(WorkflowApplicationEventArgs e)
{
    Console.WriteLine("Workflow {0} unloaded.", e.InstanceId);
};

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

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

wfApp.Terminate(new ApplicationException("Terminating the workflow."));

Комментарии

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

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

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

Terminate(String)

Завершает экземпляр рабочего процесса, используя указанное сообщение об ошибке.

public:
 void Terminate(System::String ^ reason);
public void Terminate (string reason);
member this.Terminate : string -> unit
Public Sub Terminate (reason As String)

Параметры

reason
String

Причина завершения работы экземпляра рабочего процесса.

Примеры

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

Starting the workflow.   
Workflow f87c6f91-4fe4-40b9-b7cb-4f1bd071bf84 Terminated.   
Exception: System.Activities.WorkflowApplicationTerminatedException  
Terminating the workflow.   
Workflow f87c6f91-4fe4-40b9-b7cb-4f1bd071bf84 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.Unloaded = delegate(WorkflowApplicationEventArgs e)
{
    Console.WriteLine("Workflow {0} unloaded.", e.InstanceId);
};

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

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

wfApp.Terminate("Terminating the workflow.");

Комментарии

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

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

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

Terminate(Exception, TimeSpan)

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

public:
 void Terminate(Exception ^ reason, TimeSpan timeout);
public void Terminate (Exception reason, TimeSpan timeout);
member this.Terminate : Exception * TimeSpan -> unit
Public Sub Terminate (reason As Exception, timeout As TimeSpan)

Параметры

reason
Exception

Причина завершения работы экземпляра рабочего процесса.

timeout
TimeSpan

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

Примеры

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

Starting the workflow.   
Workflow de28efe5-9057-472b-8d95-899c249893c5 Terminated.  
Exception: System.ApplicationException  
Terminating the workflow.   
Workflow de28efe5-9057-472b-8d95-899c249893c5 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.Unloaded = delegate(WorkflowApplicationEventArgs e)
{
    Console.WriteLine("Workflow {0} unloaded.", e.InstanceId);
};

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

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

wfApp.Terminate(new ApplicationException("Terminating the workflow."),
    TimeSpan.FromSeconds(15));

Комментарии

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

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

Terminate(String, TimeSpan)

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

public:
 void Terminate(System::String ^ reason, TimeSpan timeout);
public void Terminate (string reason, TimeSpan timeout);
member this.Terminate : string * TimeSpan -> unit
Public Sub Terminate (reason As String, timeout As TimeSpan)

Параметры

reason
String

Причина завершения работы экземпляра рабочего процесса.

timeout
TimeSpan

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

Примеры

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

Starting the workflow.   
Workflow 2897d2ef-377e-4224-ae93-5c19b38f487c Terminated.   
Exception: System.Activities.WorkflowApplicationTerminatedException  
Terminating the workflow.   
Workflow 2897d2ef-377e-4224-ae93-5c19b38f487c 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.Unloaded = delegate(WorkflowApplicationEventArgs e)
{
    Console.WriteLine("Workflow {0} unloaded.", e.InstanceId);
};

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

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

wfApp.Terminate("Terminating the workflow.", TimeSpan.FromSeconds(15));

Комментарии

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

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