WorkflowRuntime.WorkflowUnloaded Event

 

Occurs when the workflow instance is unloaded from memory.

Namespace:   System.Workflow.Runtime
Assembly:  System.Workflow.Runtime (in System.Workflow.Runtime.dll)

public event EventHandler<WorkflowEventArgs> WorkflowUnloaded

A workflow instance can be unloaded from memory by an explicit call to Unload, or implicitly by the workflow run-time engine according to its own semantics. For example, the workflow run-time engine unloads a workflow instance if the instance becomes idle and the runtime has a WorkflowPersistenceService added for which UnloadOnIdle is true.

The workflow run-time engine raises the

WorkflowUnloaded event after the state of the workflow instance has been successfully persisted but before the instance is invalidated in memory. Therefore, a WorkflowPersisted event precedes the WorkflowUnloaded event.

For the E:System.Workflow.Runtime.WorkflowRuntime.WorkflowUnLoaded event, the sender contains the WorkflowRuntime and WorkflowEventArgs contains the WorkflowInstance associated with the event.

For more information about handling events, see Consuming Events.

The following code example demonstrates how to use WorkflowRuntime functionality from a workflow host. The code associates the WorkflowUnloaded with an event handler, a method named OnWorkflowUnload.

This code example is part of the Custom Persistence Service Sample.

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");
        }
    }
}

.NET Framework
Available since 3.0
Return to top
Show: