WorkflowRuntime.WorkflowUnloaded Událost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Nastane, když je instance pracovního postupu uvolněna z paměti.
public:
event EventHandler<System::Workflow::Runtime::WorkflowEventArgs ^> ^ WorkflowUnloaded;
public event EventHandler<System.Workflow.Runtime.WorkflowEventArgs> WorkflowUnloaded;
member this.WorkflowUnloaded : EventHandler<System.Workflow.Runtime.WorkflowEventArgs>
Public Custom Event WorkflowUnloaded As EventHandler(Of WorkflowEventArgs)
Public Event WorkflowUnloaded As EventHandler(Of WorkflowEventArgs)
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ží WorkflowUnloaded obslužnou rutinu události, metodu s názvem OnWorkflowUnload
.
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
Instanci pracovního postupu lze uvolnit z paměti explicitním voláním Unloadnebo implicitně modulem běhu pracovního postupu podle vlastní sémantiky. Modul běhu pracovního postupu například uvolní instanci pracovního postupu, pokud se instance stane nečinnou a modul runtime má přidanou WorkflowPersistenceService instanci, pro kterou UnloadOnIdle je true
.
Modul běhu pracovního postupu vyvolá WorkflowUnloaded
událost po úspěšném zachování stavu instance pracovního postupu, ale před zrušením platnosti instance v paměti.
WorkflowPersisted Proto událost předchází událostiWorkflowUnloaded.
WorkflowUnloaded
Pro událost odesílatel obsahuje WorkflowRuntime a WorkflowEventArgs obsahuje přidruženou WorkflowInstance událost.
Další informace o zpracování událostí najdete v tématu Zpracování a vyvolávání událostí.