WorkflowRuntime.ServicesExceptionNotHandled Událost

Definice

Nastane, když služba odvozená z WorkflowRuntimeService třídy volá 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 Custom Event ServicesExceptionNotHandled As EventHandler(Of ServicesExceptionNotHandledEventArgs) 
Public Event ServicesExceptionNotHandled As EventHandler(Of ServicesExceptionNotHandledEventArgs) 

Event Type

Příklady

Následující příklad kódu ukazuje, jak používat WorkflowRuntime funkce z hostitele pracovního postupu. Kód přidružuje ServicesExceptionNotHandled obslužnou rutinu události, metodu s názvem OnExceptionNotHandled.

Tento příklad kódu je součástí vlastní ukázky služby trvalosti.

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

Poznámky

Služba, která je odvozena z WorkflowRuntimeService třídy, může volat metodu RaiseServicesExceptionNotHandledEvent informovat odběratele ServicesExceptionNotHandled události, že během jejího provádění došlo k výjimce, kterou nemohl zpracovat. Pokud chcete implementovat mechanismus obnovení, můžete se přihlásit k odběru této události.

Tato událost je vyvolána, když modul běhu pracovního postupu ještě nevytvořil instanci pracovního postupu a dojde k výjimce. V tomto scénáři jediným způsobem, jak informovat hostitelskou aplikaci, že došlo k výjimce, je vyvolat tuto událost. Modul běhu pracovního postupu to ale nevolá přímo. Modul běhu pracovního postupu místo toho buď doručí výjimku instanci pracovního postupu, nebo pokud neexistuje žádná instance, vrátí zpět volajícímu, což je v tomto případě ve skutečnosti služba, která tuto událost aktivuje. Pokud vytvoříte vlastní službu trvalosti nebo plánovače, musíte tuto událost implementovat sami prostřednictvím základní RaiseServicesExceptionNotHandledEvent metody.

ServicesExceptionNotHandled Pro událost odesílatel obsahuje WorkflowRuntime a WorkflowEventArgs obsahuje Guid instanci pracovního postupu, která používala službu, a Exception tu, kterou nebylo možné zpracovat.

Další informace o zpracování událostí najdete v tématu Zpracování a vyvolávání událostí.

Platí pro