Freigeben über


WorkflowApplication.OnUnhandledException Eigenschaft

Definition

Ruft die Func<T,TResult>-Aktion ab, die ausgelöst wird, wenn die aktuelle Workflowinstanz eine unbehandelte Ausnahme erkennt, bzw. legt sie fest.

public:
 property Func<System::Activities::WorkflowApplicationUnhandledExceptionEventArgs ^, System::Activities::UnhandledExceptionAction> ^ OnUnhandledException { Func<System::Activities::WorkflowApplicationUnhandledExceptionEventArgs ^, System::Activities::UnhandledExceptionAction> ^ get(); void set(Func<System::Activities::WorkflowApplicationUnhandledExceptionEventArgs ^, System::Activities::UnhandledExceptionAction> ^ value); };
public Func<System.Activities.WorkflowApplicationUnhandledExceptionEventArgs,System.Activities.UnhandledExceptionAction> OnUnhandledException { get; set; }
member this.OnUnhandledException : Func<System.Activities.WorkflowApplicationUnhandledExceptionEventArgs, System.Activities.UnhandledExceptionAction> with get, set
Public Property OnUnhandledException As Func(Of WorkflowApplicationUnhandledExceptionEventArgs, UnhandledExceptionAction)

Eigenschaftswert

Der Delegat, der ausgelöst wird, wenn bei einer Workflowinstanz ein Ausnahmefehler auftritt.

Beispiele

Im folgenden Beispiel wird ein Workflow aufgerufen, der eine Ausnahme auslöst. Die Ausnahme wird vom Workflow nicht behandelt, und der OnUnhandledException-Handler wird aufgerufen. Die WorkflowApplicationUnhandledExceptionEventArgs werden überprüft, um Informationen zur Ausnahme bereitzustellen, und der Workflow wird beendet.

Activity wf = new Sequence
{
    Activities =
     {
         new WriteLine
         {
             Text = "Starting the workflow."
         },
         new Throw
        {
            Exception = new InArgument<Exception>((env) =>
                new ApplicationException("Something unexpected happened."))
        },
        new WriteLine
         {
             Text = "Ending the workflow."
         }
     }
};

WorkflowApplication wfApp = new WorkflowApplication(wf);

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.
    return UnhandledExceptionAction.Terminate;

    // Other choices are UnhandledExceptionAction.Abort and
    // UnhandledExceptionAction.Cancel
};

wfApp.Run();

Hinweise

Sowohl OnUnhandledException als auch WorkflowUnhandledExceptionBehavior bestimmen das Verhalten der Laufzeit, wenn eine Ausnahme nicht im Workflow behandelt wird. WorkflowUnhandledExceptionBehavior kann einen unterbrochenen Workflow jedoch optional im Persistenzspeicher belassen. Diese Option besteht bei OnUnhandledException nicht. Der Grund dafür ist, dass die Vorgänge im Zusammenhang mit einem unterbrochenen Workflow im Gegensatz zu WorkflowApplication hostspezifisch sind. Um diese Funktion mit WorkflowApplication zu implementieren, erstellen Sie einen benutzerdefinierten PersistenceParticipant, der dieses Verhalten aufweist.

Gilt für: