UnhandledExceptionAction UnhandledExceptionAction UnhandledExceptionAction UnhandledExceptionAction Enum

Definizione

Specifica l'azione che si verifica quando un'eccezione esegue l'escape della radice di un flusso di lavoro.Specifies the action that occurs when an exception escapes the root of a workflow.

public enum class UnhandledExceptionAction
public enum UnhandledExceptionAction
type UnhandledExceptionAction = 
Public Enum UnhandledExceptionAction
Ereditarietà
UnhandledExceptionActionUnhandledExceptionActionUnhandledExceptionActionUnhandledExceptionAction

Campi

Abort Abort Abort Abort 0

Specifica che WorkflowApplication deve interrompere il flusso di lavoro.Specifies that the WorkflowApplication should abort the workflow.

Cancel Cancel Cancel Cancel 1

Specifica che WorkflowApplication deve pianificare l'annullamento dell'attività radice e riprendere l'esecuzione.Specifies that the WorkflowApplication should schedule the cancellation of the root activity and resume execution.

Terminate Terminate Terminate Terminate 2

Specifica che WorkflowApplication deve pianificare la chiusura dell'attività radice e riprendere l'esecuzione.Specifies that the WorkflowApplication should schedule termination of the root activity and resume execution.

Esempi

Nell'esempio seguente viene richiamato un flusso di lavoro che genera un'eccezione.The following example invokes a workflow that throws an exception. L'eccezione non viene gestita dal flusso di lavoro e viene richiamato il gestore OnUnhandledException.The exception is unhandled by the workflow and the OnUnhandledException handler is invoked. Gli argomenti WorkflowApplicationUnhandledExceptionEventArgs vengono controllati per fornire informazioni sull'eccezione e il flusso di lavoro viene terminato.The WorkflowApplicationUnhandledExceptionEventArgs are inspected to provide information about the exception, and the workflow is terminated.

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;
};

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

        // Retrieve the outputs of the workflow.
        foreach (var kvp in e.Outputs)
        {
            Console.WriteLine("Name: {0} - Value {1}",
                kvp.Key, kvp.Value);
        }

        // Outputs can be directly accessed by argument name.
        // Console.WriteLine("The winner is {0}.", e.Outputs["Winner"]);
    }
};

wfApp.Run();

Commenti

La funzione OnUnhandledException viene richiamata se un'eccezione esegue l'escape della radice del flusso di lavoro.The OnUnhandledException function is invoked if an exception escapes the root of the workflow. WorkflowApplicationUnhandledExceptionEventArgs fornisce accesso all'eccezione così come un puntatore al Activity che ha generato l'eccezione.The WorkflowApplicationUnhandledExceptionEventArgs provides access to the exception as well as a pointer to the Activity that generated the exception. Terminare è l'azione predefinita se nessun OnUnhandledException gestore di è specificato.Terminate is the default action if no OnUnhandledException handler is specified.

Si applica a