WorkflowApplication.OnUnhandledException Właściwość

Definicja

Pobiera lub ustawia Func<T,TResult> element wywoływany, gdy bieżące wystąpienie przepływu pracy napotka nieobsługiwany wyjątek.

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)

Wartość właściwości

Delegat wywoływany, gdy wystąpienie przepływu pracy napotka nieobsługiwany wyjątek.

Przykłady

Poniższy przykład wywołuje przepływ pracy, który zgłasza wyjątek. Wyjątek nie jest obsługiwane przez przepływ pracy, a OnUnhandledException procedura obsługi jest wywoływana. Są WorkflowApplicationUnhandledExceptionEventArgs sprawdzane w celu dostarczenia informacji o wyjątku, a przepływ pracy zostanie zakończony.

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

Uwagi

Zarówno OnUnhandledException , jak i WorkflowUnhandledExceptionBehavior dyktują zachowanie środowiska uruchomieniowego, gdy wyjątek nie jest obsługiwany w przepływie pracy, WorkflowUnhandledExceptionBehavior ale ma możliwość pozostawienia zawieszonego przepływu pracy w magazynie trwałości, ale OnUnhandledException nie. Przyczyną tego jest to, że to, co się stanie z zawieszonym przepływem pracy, jest specyficzne dla hosta i WorkflowApplication nie jest. Aby zaimplementować tę funkcję przy użyciu polecenia WorkflowApplication, utwórz niestandardowy PersistenceParticipant , który ma to zachowanie.

Dotyczy