WorkflowInvoker.Invoke<TResult> Method (Activity<TResult>)

.NET Framework (current version)
 

Invokes a workflow synchronously using the workflow definition passed to the WorkflowInvoker constructor.

Namespace:   System.Activities
Assembly:  System.Activities (in System.Activities.dll)

public static TResult Invoke<TResult>(
	Activity<TResult> workflow
)

Parameters

workflow
Type: System.Activities.Activity<TResult>

The workflow definition of the workflow to invoke. The workflow definition needs to derive from ActivityWithResult.

Return Value

Type: TResult

A value of type TResult with the result of the execution of the activity.

Type Parameters

TResult

The type of the workflow.

This method blocks until the workflow has completed, including idle time. All workflow execution is guaranteed to execute on the invoking thread. To configure a time-out interval in which the workflow must complete, use one of the Invoke overloads that take a TimeSpan.

The following example invokes a workflow consisting of a single Add activity that has two input arguments and since it derives from CodeActivity<int> it has one well-defined Result output argument. When the workflow is invoked, the arguments dictionary is passed which contains the values for each input argument, keyed by argument name. When the call to Invoke returns, the value of the Result output argument is returned. This code example is based off of the Using the WorkflowInvoker Class sample.

public sealed class Add : CodeActivity<int>
{
    public InArgument<int> X { get; set; }
    public InArgument<int> Y { get; set; }

    protected override int Execute(CodeActivityContext context)
    {
        int x = X.Get(context);
        int y = Y.Get(context);

        return x + y;
    }
}
int x = 1;
int y = 2;

Dictionary<string, object> arguments = new Dictionary<string, object>();
arguments.Add("X", x);
arguments.Add("Y", y);

Console.WriteLine("Invoking Add.");

int result = WorkflowInvoker.Invoke(new Add(), arguments);

Console.WriteLine("{0} + {1} = {2}", x, y, result);

.NET Framework
Available since 4.0
Return to top
Show: