WorkflowRuntime.ServicesExceptionNotHandled WorkflowRuntime.ServicesExceptionNotHandled WorkflowRuntime.ServicesExceptionNotHandled WorkflowRuntime.ServicesExceptionNotHandled Event

Definition

Tritt ein, wenn ein Dienst, der von der WorkflowRuntimeService-Klasse abgeleitet wird, RaiseServicesExceptionNotHandledEvent(Exception, Guid) aufruft.Occurs when a service that is derived from the WorkflowRuntimeService class calls RaiseServicesExceptionNotHandledEvent(Exception, Guid).

public:
 event EventHandler<System::Workflow::Runtime::ServicesExceptionNotHandledEventArgs ^> ^ ServicesExceptionNotHandled;
public event EventHandler<System.Workflow.Runtime.ServicesExceptionNotHandledEventArgs> ServicesExceptionNotHandled;
member this.ServicesExceptionNotHandled : EventHandler<System.Workflow.Runtime.ServicesExceptionNotHandledEventArgs> 
Public Event ServicesExceptionNotHandled As EventHandler(Of ServicesExceptionNotHandledEventArgs) 

Beispiele

Das folgende Codebeispiel zeigt, wie Sie die WorkflowRuntime-Funktionalität eines Workflowhosts verwenden können.The following code example demonstrates how to use WorkflowRuntime functionality from a workflow host. Der Code ordnet ServicesExceptionNotHandled einem Ereignishandler zu. Bei diesem handelt es sich um die Methode OnExceptionNotHandled.The code associates ServicesExceptionNotHandled with an event handler, a method named OnExceptionNotHandled.

Dieses Codebeispiel ist Teil des Beispiel für den benutzerdefinierten Persistenzdienst.This code example is part of the Custom Persistence Service Sample.

static void Main()
{
    using (WorkflowRuntime workflowRuntime = new WorkflowRuntime())
    {
        try
        {
            // engine will unload workflow instance when it is idle
            workflowRuntime.AddService(new FilePersistenceService(true));

            workflowRuntime.WorkflowCreated += OnWorkflowCreated;
            workflowRuntime.WorkflowCompleted += OnWorkflowCompleted;
            workflowRuntime.WorkflowIdled += OnWorkflowIdle;
            workflowRuntime.WorkflowUnloaded += OnWorkflowUnload;
            workflowRuntime.WorkflowLoaded += OnWorkflowLoad;
            workflowRuntime.WorkflowTerminated += OnWorkflowTerminated;
            workflowRuntime.ServicesExceptionNotHandled += OnExceptionNotHandled;

            workflowRuntime.CreateWorkflow(typeof(PersistenceServiceWorkflow)).Start();

            waitHandle.WaitOne();
        }
        catch (Exception e)
        {
            Console.WriteLine("Exception \n\t Source: {0} \n\t Message: {1}", e.Source, e.Message);
        }
        finally
        {
            workflowRuntime.StopRuntime();
            Console.WriteLine("Workflow runtime stopped, program exiting... \n");
        }
    }
}
Shared Sub Main()

    Using currentWorkflowRuntime As New WorkflowRuntime()
        Try

            ' engine will unload workflow instance when it is idle
            currentWorkflowRuntime.AddService(New FilePersistenceService(True))

            AddHandler currentWorkflowRuntime.WorkflowCreated, AddressOf OnWorkflowCreated
            AddHandler currentWorkflowRuntime.WorkflowCompleted, AddressOf OnWorkflowCompleted
            AddHandler currentWorkflowRuntime.WorkflowIdled, AddressOf OnWorkflowIdled
            AddHandler currentWorkflowRuntime.WorkflowUnloaded, AddressOf OnWorkflowUnloaded
            AddHandler currentWorkflowRuntime.WorkflowLoaded, AddressOf OnWorkflowLoaded
            AddHandler currentWorkflowRuntime.WorkflowTerminated, AddressOf OnWorkflowTerminated
            AddHandler currentWorkflowRuntime.ServicesExceptionNotHandled, AddressOf OnExceptionNotHandled

            currentWorkflowRuntime.CreateWorkflow(GetType(PersistenceServiceWorkflow)).Start()

            waitHandle.WaitOne()

        Catch e As Exception
            Console.WriteLine("Exception \n\t Source: 0} \n\t Message: 1}", e.Source, e.Message)
        Finally
            currentWorkflowRuntime.StopRuntime()
            Console.WriteLine("Workflow runtime stopped, program exiting... \n")
        End Try
    End Using
End Sub

Hinweise

Ein von der WorkflowRuntimeService-Klasse abgeleiteter Dienst kann die RaiseServicesExceptionNotHandledEvent-Methode aufrufen, um die Abonnenten des ServicesExceptionNotHandled-Ereignisses darüber zu informieren, dass während der Ausführung eine Ausnahme aufgetreten ist, die nicht behandelt werden konnte.A service that is derived from the WorkflowRuntimeService class can call the RaiseServicesExceptionNotHandledEvent method to inform subscribers to the ServicesExceptionNotHandled event that an exception that it was unable to handle occurred during its execution. Sie können dieses Ereignis abonnieren, um einen Wiederherstellungsmechanismus zu implementieren.You can subscribe to this event to implement a recovery mechanism.

Dieses Ereignis wird ausgelöst, wenn die Workflowruntime-Engine noch keine Workflowinstanz erstellt hat und eine Ausnahme auftritt.This event is raised when a workflow instance has not been created yet by the workflow run-time engine and an exception occurs. Bei diesem Szenario besteht die einzige Möglichkeit zum Informieren eines Hosts darüber, dass eine Ausnahme aufgetreten ist, im Auslösen dieses Ereignisses.In this scenario, the only way to inform a host application that an exception occurred is to raise this event. Die Workflowruntime-Engine ruft das Ereignis jedoch nicht direkt auf.However, the workflow run-time engine does not call this directly. Stattdessen liefert die Workflowruntime-Engine entweder eine Ausnahme an die Workflowinstanz oder übergibt den Fall zurück an den Absender, falls keine Instanz vorhanden ist. In diesem Szenario ist dies der Dienst, der das Ereignis auslöst.Instead, the workflow run-time engine either delivers an exception to the workflow instance or, if there is no instance, throws back to the caller, which in this case is actually the service that fires this event. Wenn Sie einen eigenen Persistenz- oder Planungsdienst erstellen, müssen Sie dieses Ereignis selbst mithilfe der RaiseServicesExceptionNotHandledEvent-Basismethode implementieren.If you create your own persistence or scheduler service, you must implement this event yourself through the base RaiseServicesExceptionNotHandledEvent method.

Beim ServicesExceptionNotHandled-Ereignis enthält der Absender die WorkflowRuntime, und WorkflowEventArgs enthält die Guid der Workflowinstanz, die den Dienst verwendet hat, und die Exception, die nicht verarbeitet werden konnte.For the ServicesExceptionNotHandled event, the sender contains the WorkflowRuntime and WorkflowEventArgs contains the Guid of the workflow instance that was using the service and the Exception that could not be handled.

Weitere Informationen zur Behandlung von Ereignissen finden Sie unter behandeln und Auswerfen von Ereignissen.For more information about handling events, see Handling and raising events.

Gilt für: