Aracılığıyla paylaş


WorkflowApplication.OnUnhandledException Özellik

Tanım

Geçerli iş akışı örneği işlenmeyen bir özel durumla karşılaştığında çağrılan öğesini alır veya ayarlar Func<T,TResult> .

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)

Özellik Değeri

İş akışı örneği işlenmeyen bir özel durumla karşılaştığında çağrılan temsilci.

Örnekler

Aşağıdaki örnek, özel durum oluşturan bir iş akışı çağırır. Özel durum iş akışı tarafından işlenmemiştir ve OnUnhandledException işleyici çağrılır. WorkflowApplicationUnhandledExceptionEventArgs özel durum hakkında bilgi sağlamak için incelenir ve iş akışı sonlandırılır.

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

Açıklamalar

WorkflowUnhandledExceptionBehavior Hem hem de OnUnhandledException iş akışında bir özel durum işlenmediğinde çalışma zamanının davranışını dikte edin; ancak WorkflowUnhandledExceptionBehavior askıya alınmış bir iş akışını kalıcılık deposunda bırakma seçeneği vardır, ancak OnUnhandledException bırakmaz. Bunun nedeni, askıya alınan bir iş akışına olan şeyin konağa özgü olması ve WorkflowApplication olmamasıdır. kullanarak WorkflowApplicationbu işlevi uygulamak için, bu davranışa sahip bir özel PersistenceParticipant öğe oluşturun.

Şunlara uygulanır