WorkflowApplication.Abort Method
Notifies the workflow runtime that this workflow instance should abort.
Namespace: System.Activities
Assembly: System.Activities (in System.Activities.dll)
When a workflow hosted by a WorkflowApplication is aborted, the Aborted handler is invoked and the Completed handler is not invoked.
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, Abort is called. When the workflow is aborted, the following output is displayed to the console.
Starting the workflow. Workflow 3b76d562-516a-4a52-b17c-0f2ce531ad93 Idle. Workflow 3b76d562-516a-4a52-b17c-0f2ce531ad93 Aborted Exception: System.Activities.WorkflowApplicationAbortedException The workflow has been aborted.
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.Aborted = delegate(WorkflowApplicationAbortedEventArgs e) { // Display the exception that caused the workflow // to abort. Console.WriteLine("Workflow {0} Aborted.", e.InstanceId); Console.WriteLine("Exception: {0}\n{1}", e.Reason.GetType().FullName, e.Reason.Message); }; wfApp.Idle = delegate(WorkflowApplicationIdleEventArgs e) { // Perform any processing that should occur // when a workflow goes idle. If the workflow can persist, // both Idle and PersistableIdle are called in that order. Console.WriteLine("Workflow {0} Idle.", e.InstanceId); }; wfApp.PersistableIdle = delegate(WorkflowApplicationIdleEventArgs e) { // Instruct the runtime to persist and unload the workflow return PersistableIdleAction.Unload; }; wfApp.Unloaded = delegate(WorkflowApplicationEventArgs e) { Console.WriteLine("Workflow {0} Unloaded.", e.InstanceId); }; wfApp.OnUnhandledException = delegate(WorkflowApplicationUnhandledExceptionEventArgs e) { // Display the unhandled exception. Console.WriteLine("OnUnhandledException in Workflow {0}\n{1}", e.InstanceId, e.UnhandledException.Message); Console.WriteLine("ExceptionSource: {0} - {1}", e.ExceptionSource.DisplayName, e.ExceptionSourceInstanceId); // Instruct the runtime to terminate the workflow. // Other choices are Abort and Cancel return UnhandledExceptionAction.Terminate; }; // Run the workflow. wfApp.Run(); Thread.Sleep(TimeSpan.FromSeconds(1)); wfApp.Abort();
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.