WorkflowApplication.OnUnhandledException Propriedade

Definição

Obtém ou define o Func<T,TResult> que é invocado quando a instância do fluxo de trabalho atual encontra uma exceção não tratada.

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)

Valor de Propriedade

O delegado que é invocado quando uma instância de workflow encontra uma exceção não tratada.

Exemplos

O exemplo a seguir invoca um fluxo de trabalho que gera uma exceção. A exceção não é tratada pelo fluxo de trabalho e o manipulador de OnUnhandledException é invocado. Os WorkflowApplicationUnhandledExceptionEventArgs são inspecionados para fornecer informações sobre a exceção e o fluxo de trabalho é encerrado.

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

Observações

Tanto OnUnhandledException como WorkflowUnhandledExceptionBehavior ditam o comportamento do tempo de execução quando uma exceção não é tratada no fluxo de trabalho; no entanto, WorkflowUnhandledExceptionBehavior tem a opção de deixar um fluxo de trabalho suspenso no armazenamento de persistência, enquanto OnUnhandledException não o faz. A razão para isto é que o que acontece a um fluxo de trabalho suspenso é específico do anfitrião, e WorkflowApplication não é. Para implementar esta funcionalidade usando WorkflowApplication, crie um personalizado PersistenceParticipant que tenha este comportamento.

Aplica-se a