WorkflowApplication.OnUnhandledException Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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.