WorkflowRuntime.WorkflowUnloaded Event

Definition

Occurs when the workflow instance is unloaded from memory.

C#
public event EventHandler<System.Workflow.Runtime.WorkflowEventArgs> WorkflowUnloaded;

Event Type

Examples

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.

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

Remarks

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 WorkflowUnloaded event, the sender contains the WorkflowRuntime and WorkflowEventArgs contains the WorkflowInstance associated with the event.

For more information about handling events, see Handling and raising events.

Applies to

Product Versions
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1