WorkflowRuntime.ServicesExceptionNotHandled Zdarzenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Występuje, gdy usługa pochodząca z klasy wywołuje metodę WorkflowRuntimeServiceRaiseServicesExceptionNotHandledEvent(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)
Typ zdarzenia
Przykłady
W poniższym przykładzie kodu pokazano, jak używać WorkflowRuntime funkcji z hosta przepływu pracy. Kod kojarzy ServicesExceptionNotHandled się z procedurą obsługi zdarzeń , metodą o nazwie OnExceptionNotHandled
.
Ten przykładowy kod jest częścią przykładowej usługi Custom Persistence Service.
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
Uwagi
Usługa, która pochodzi z WorkflowRuntimeService klasy, może wywołać metodę RaiseServicesExceptionNotHandledEvent , aby poinformować subskrybentów o ServicesExceptionNotHandled zdarzeniu, że wyjątek, którego nie można obsłużyć, wystąpił podczas wykonywania. Możesz subskrybować to zdarzenie, aby zaimplementować mechanizm odzyskiwania.
To zdarzenie jest zgłaszane, gdy wystąpienie przepływu pracy nie zostało jeszcze utworzone przez aparat czasu wykonywania przepływu pracy i wystąpi wyjątek. W tym scenariuszu jedynym sposobem informowania aplikacji hosta o wystąpieniu wyjątku jest zgłoszenie tego zdarzenia. Jednak aparat czasu wykonywania przepływu pracy nie wywołuje tego bezpośrednio. Zamiast tego aparat czasu wykonywania przepływu pracy dostarcza wyjątek do wystąpienia przepływu pracy lub, jeśli nie ma wystąpienia, zwraca element wywołujący, co w tym przypadku jest w rzeczywistości usługą, która uruchamia to zdarzenie. Jeśli tworzysz własną usługę trwałości lub harmonogramu, musisz zaimplementować to zdarzenie samodzielnie za pomocą metody podstawowej RaiseServicesExceptionNotHandledEvent .
ServicesExceptionNotHandled W przypadku zdarzenia nadawca zawiera WorkflowRuntime element i WorkflowEventArgs zawiera Guid wystąpienie przepływu pracy, które korzystało z usługi i Exception którego nie można obsłużyć.
Aby uzyskać więcej informacji na temat obsługi zdarzeń, zobacz Obsługa i zgłaszanie zdarzeń.