Поделиться через


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, связанный с этим событием.

Дополнительные сведения об обработке событий см. в разделе Обработка и создание событий.

Применяется к