Partager via


WorkflowApplication.Terminate Méthode

Définition

Met fin à une instance de flux de travail.

Surcharges

Terminate(Exception)

Met fin à une instance de flux de travail à l'aide de l'exception spécifiée.

Terminate(String)

Met fin à une instance de flux de travail avec le message d'erreur spécifié.

Terminate(Exception, TimeSpan)

Met fin à une instance de flux de travail avec l'exception et l'intervalle de délai d'attente spécifiés.

Terminate(String, TimeSpan)

Met fin à une instance de flux de travail avec le message d'erreur et l'intervalle de délai d'attente spécifiés.

Terminate(Exception)

Met fin à une instance de flux de travail à l'aide de l'exception spécifiée.

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

Paramètres

reason
Exception

Motif de fin de l'instance de flux de travail.

Exemples

L'exemple suivant héberge un workflow à l'aide de WorkflowApplication. Une instance de WorkflowApplication est construite à l'aide de la définition de flux de travail spécifiée, les événements de cycle de vie souhaités du flux de travail sont gérés et le flux de travail est appelé au moyen d'un appel à Run. Une fois que le flux de travail a démarré, la méthode Terminate est appelée. Lorsque le flux de travail est arrêté, la sortie suivante s'affiche sur la console.

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

Remarques

Cette méthode planifie l'arrêt de l'instance de flux de travail. Pour être averti lorsque l'arrêt est terminé, utilisez le handle Completed.

Par défaut, l'opération Terminate doit être exécutée dans un délai de 30 secondes, sinon une exception TimeoutException est levée.

S’applique à

Terminate(String)

Met fin à une instance de flux de travail avec le message d'erreur spécifié.

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

Paramètres

reason
String

Motif de fin de l'instance de flux de travail.

Exemples

L'exemple suivant héberge un workflow à l'aide de WorkflowApplication. Une instance de WorkflowApplication est construite à l'aide de la définition de flux de travail spécifiée, les événements de cycle de vie souhaités du flux de travail sont gérés et le flux de travail est appelé au moyen d'un appel à Run. Une fois que le flux de travail a démarré, la méthode Terminate est appelée. Lorsque le flux de travail est arrêté, la sortie suivante s'affiche sur la console.

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

Remarques

Cette méthode planifie l'arrêt de l'instance de flux de travail. Pour être averti lorsque l'arrêt est terminé, utilisez le handle Completed.

Par défaut, l'opération Terminate doit être exécutée dans un délai de 30 secondes, sinon une exception TimeoutException est levée.

S’applique à

Terminate(Exception, TimeSpan)

Met fin à une instance de flux de travail avec l'exception et l'intervalle de délai d'attente spécifiés.

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)

Paramètres

reason
Exception

Motif de fin de l'instance de flux de travail.

timeout
TimeSpan

Intervalle dans lequel l'opération Terminate(Exception, TimeSpan) doit être réalisée avant que l'opération ne soit annulée et qu'une TimeoutException ne soit levée.

Exemples

L'exemple suivant héberge un workflow à l'aide de WorkflowApplication. Une instance de WorkflowApplication est construite à l'aide de la définition de flux de travail spécifiée, les événements de cycle de vie souhaités du flux de travail sont gérés et le flux de travail est appelé au moyen d'un appel à Run. Une fois que le flux de travail a démarré, la méthode Terminate est appelée. Lorsque le flux de travail est arrêté, la sortie suivante s'affiche sur la console.

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

Remarques

Cette méthode planifie l'arrêt du flux de travail. Pour être averti lorsque l'arrêt est terminé, utilisez le handle Completed.

S’applique à

Terminate(String, TimeSpan)

Met fin à une instance de flux de travail avec le message d'erreur et l'intervalle de délai d'attente spécifiés.

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)

Paramètres

reason
String

Motif de fin de l'instance de flux de travail.

timeout
TimeSpan

Intervalle dans lequel l'opération Terminate(String, TimeSpan) doit être réalisée avant que l'opération ne soit annulée et qu'une TimeoutException ne soit levée.

Exemples

L'exemple suivant héberge un workflow à l'aide de WorkflowApplication. Une instance de WorkflowApplication est construite à l'aide de la définition de flux de travail spécifiée, les événements de cycle de vie souhaités du flux de travail sont gérés et le flux de travail est appelé au moyen d'un appel à Run. Une fois que le flux de travail a démarré, la méthode Terminate est appelée. Lorsque le flux de travail est arrêté, la sortie suivante s'affiche sur la console.

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

Remarques

Cette méthode planifie l'arrêt de l'instance de flux de travail. Pour être averti lorsque l'arrêt est terminé, utilisez le handle Completed.

S’applique à