Udostępnij za pośrednictwem


WorkflowApplication.Terminate Metoda

Definicja

Przerywa wystąpienie przepływu pracy.

Przeciążenia

Terminate(Exception)

Przerywa wystąpienie przepływu pracy przy użyciu określonego wyjątku.

Terminate(String)

Przerywa wystąpienie przepływu pracy przy użyciu określonego komunikatu o błędzie.

Terminate(Exception, TimeSpan)

Przerywa wystąpienie przepływu pracy przy użyciu określonego wyjątku i interwału limitu czasu.

Terminate(String, TimeSpan)

Przerywa wystąpienie przepływu pracy przy użyciu określonego komunikatu o błędzie i interwału przekroczenia limitu czasu.

Terminate(Exception)

Przerywa wystąpienie przepływu pracy przy użyciu określonego wyjątku.

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

Parametry

reason
Exception

Przyczyna zakończenia wystąpienia przepływu pracy.

Przykłady

Poniższy przykład hostuje przepływ pracy przy użyciu polecenia WorkflowApplication. WorkflowApplication Wystąpienie jest tworzone przy użyciu określonej definicji przepływu pracy, obsługiwane są żądane zdarzenia cyklu życia przepływu pracy, a przepływ pracy jest wywoływany za pomocą wywołania metody Run. Po uruchomieniu Terminate przepływu pracy jest wywoływany. Po zakończeniu przepływu pracy do konsoli zostaną wyświetlone następujące dane wyjściowe.

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."));

Uwagi

Ta metoda planuje zakończenie wystąpienia przepływu pracy. Aby otrzymywać powiadomienia po zakończeniu zakończenia, użyj uchwytu Completed .

Domyślnie Terminate operacja musi zostać ukończona w ciągu 30 sekund lub zostanie wyrzucona TimeoutException .

Dotyczy

Terminate(String)

Przerywa wystąpienie przepływu pracy przy użyciu określonego komunikatu o błędzie.

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

Parametry

reason
String

Przyczyna zakończenia wystąpienia przepływu pracy.

Przykłady

Poniższy przykład hostuje przepływ pracy przy użyciu polecenia WorkflowApplication. WorkflowApplication Wystąpienie jest tworzone przy użyciu określonej definicji przepływu pracy, obsługiwane są żądane zdarzenia cyklu życia przepływu pracy, a przepływ pracy jest wywoływany za pomocą wywołania metody Run. Po uruchomieniu Terminate przepływu pracy jest wywoływany. Po zakończeniu przepływu pracy do konsoli zostaną wyświetlone następujące dane wyjściowe.

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.");

Uwagi

Ta metoda planuje zakończenie wystąpienia przepływu pracy. Aby otrzymywać powiadomienia po zakończeniu zakończenia, użyj uchwytu Completed .

Domyślnie Terminate operacja musi zostać ukończona w ciągu 30 sekund lub zostanie wyrzucona TimeoutException .

Dotyczy

Terminate(Exception, TimeSpan)

Przerywa wystąpienie przepływu pracy przy użyciu określonego wyjątku i interwału limitu czasu.

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)

Parametry

reason
Exception

Przyczyna zakończenia wystąpienia przepływu pracy.

timeout
TimeSpan

Interwał, w którym Terminate(Exception, TimeSpan) operacja musi zostać ukończona przed anulowaniem TimeoutException operacji i zostanie zgłoszony.

Przykłady

Poniższy przykład hostuje przepływ pracy przy użyciu polecenia WorkflowApplication. WorkflowApplication Wystąpienie jest tworzone przy użyciu określonej definicji przepływu pracy, obsługiwane są żądane zdarzenia cyklu życia przepływu pracy, a przepływ pracy jest wywoływany za pomocą wywołania metody Run. Po uruchomieniu Terminate przepływu pracy jest wywoływany. Po zakończeniu przepływu pracy do konsoli zostaną wyświetlone następujące dane wyjściowe.

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));

Uwagi

Ta metoda planuje zakończenie przepływu pracy. Aby otrzymywać powiadomienia po zakończeniu zakończenia, użyj uchwytu Completed .

Dotyczy

Terminate(String, TimeSpan)

Przerywa wystąpienie przepływu pracy przy użyciu określonego komunikatu o błędzie i interwału przekroczenia limitu czasu.

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)

Parametry

reason
String

Przyczyna zakończenia wystąpienia przepływu pracy.

timeout
TimeSpan

Interwał, w którym Terminate(String, TimeSpan) operacja musi zostać ukończona przed anulowaniem TimeoutException operacji i zostanie zgłoszony.

Przykłady

Poniższy przykład hostuje przepływ pracy przy użyciu polecenia WorkflowApplication. WorkflowApplication Wystąpienie jest tworzone przy użyciu określonej definicji przepływu pracy, obsługiwane są żądane zdarzenia cyklu życia przepływu pracy, a przepływ pracy jest wywoływany za pomocą wywołania metody Run. Po uruchomieniu Terminate przepływu pracy jest wywoływany. Po zakończeniu przepływu pracy do konsoli zostaną wyświetlone następujące dane wyjściowe.

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));

Uwagi

Ta metoda planuje zakończenie wystąpienia przepływu pracy. Aby otrzymywać powiadomienia po zakończeniu zakończenia, użyj uchwytu Completed .

Dotyczy