WorkflowApplication.Terminate Method (String, TimeSpan)

.NET Framework (current version)

The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

Terminates a workflow instance using the specified error message and time-out interval.

Namespace:   System.Activities
Assembly:  System.Activities (in System.Activities.dll)

public void Terminate(
	string reason,
	TimeSpan timeout


Type: System.String

The reason for terminating the workflow instance.

Type: System.TimeSpan

The interval in which the Terminate operation must complete before the operation is canceled and a TimeoutException is thrown.

This method schedules the termination of the workflow instance. To be notified when the termination has completed, use the P:System.Activities.WorkflowApplication.OnCompleted handle.

The following example hosts a workflow using WorkflowApplication. 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. After the workflow is started, Terminate is called. When the workflow is terminated, the following output is displayed to the console.

Starting the workflow. Workflow 2897d2ef-377e-4224-ae93-5c19b38f487c Terminated. Exception: System.Activities.WorkflowApplicationTerminatedExceptionTerminating 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}",
    else if (e.CompletionState == ActivityInstanceState.Canceled)
        Console.WriteLine("Workflow {0} Canceled.", e.InstanceId);
        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.Terminate("Terminating the workflow.", TimeSpan.FromSeconds(15));

.NET Framework
Available since 4.0
Return to top