WorkflowRuntime.WorkflowUnloaded Событие
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Происходит при выгрузке экземпляра рабочего процесса из памяти.
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)
Тип события
Примеры
В следующем примере кода показано использование функций класса WorkflowRuntime с узла рабочего процесса. Этот код связывает событие WorkflowUnloaded с обработчиком событий — методом с именем OnWorkflowUnload
.
Этот пример кода является частью примера пользовательской службы сохраняемости.
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
Комментарии
Экземпляр рабочего процесса может быть выгружен из памяти явным вызовом метода Unload или неявно механизмом среды выполнения рабочих процессов в соответствии с его собственными правилами. Например, подсистема среды выполнения рабочих процессов выгружает экземпляр рабочего процесса, если экземпляр становится бездействующий и среда выполнения имеет добавленный WorkflowPersistenceService объект , для которого UnloadOnIdle имеет значение true
.
Подсистема среды выполнения рабочего процесса вызывает WorkflowUnloaded
событие после успешного сохранения состояния экземпляра рабочего процесса, но до того, как экземпляр становится недействительным в памяти. Поэтому событие WorkflowPersisted предшествует событию WorkflowUnloaded.
Отправитель этого события WorkflowUnloaded
содержит объект WorkflowRuntime, а объект WorkflowEventArgs содержит объект WorkflowInstance, связанный с этим событием.
Дополнительные сведения об обработке событий см. в разделе Обработка и создание событий.