WorkflowRuntime.ServicesExceptionNotHandled Evento
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Si verifica quando un servizio derivato dalla classe WorkflowRuntimeService chiama il metodo 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)
Tipo evento
Esempio
Nell'esempio di codice seguente viene illustrato come utilizzare una funzionalità WorkflowRuntime da un host del flusso di lavoro. Il codice associa ServicesExceptionNotHandled a un gestore eventi, un metodo denominato OnExceptionNotHandled
.
Questo esempio di codice fa parte dell'esempio di servizio di persistenza personalizzata.
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
Commenti
Un servizio derivato dalla classe WorkflowRuntimeService può chiamare il metodo RaiseServicesExceptionNotHandledEvent per informare i sottoscrittori dell'evento ServicesExceptionNotHandled che si è verificata un'eccezione non gestibile durante l'esecuzione. È possibile sottoscrivere questo evento per implementare un meccanismo di ripristino.
Questo evento viene generato quando un'istanza del flusso di lavoro non è ancora stata creata dal motore di runtime del flusso di lavoro e si verifica un'eccezione. In questo scenario, l'unico modo per informare un'applicazione host che si è verificata un'eccezione è generare questo evento. Tuttavia, il motore di runtime del flusso di lavoro non esegue direttamente questa operazione, bensì recapita un'eccezione all'istanza del flusso di lavoro o, se non sono disponibili istanze, rimanda di nuovo al chiamante che, in questo caso, è il servizio che genera questo evento. Se si crea un servizio di persistenza o Utilità di pianificazione, è necessario implementare questo evento tramite il metodo di base RaiseServicesExceptionNotHandledEvent.
Per l'evento ServicesExceptionNotHandled, il mittente contiene WorkflowRuntime e WorkflowEventArgs contiene il Guid dell'istanza del flusso di lavoro che stava utilizzando il servizio e la Exception che non è stato possibile gestire.
Per altre informazioni sulla gestione degli eventi, vedere Gestione e generazione di eventi.