WorkflowInvoker.CancelAsync(Object) Metod

Definition

Försöker avbryta arbetsflödet som anropades med angiven userState.

public:
 void CancelAsync(System::Object ^ userState);
public void CancelAsync(object userState);
member this.CancelAsync : obj -> unit
Public Sub CancelAsync (userState As Object)

Parametrar

userState
Object

Token för arbetsflödet som ska avbrytas.

Exempel

I följande exempel anropas ett arbetsflöde som består av en LongRunningDiceRoll aktivitet. Aktiviteten LongRunningDiceRoll har två utdataargument som representerar resultatet av tärningskaståtgärden. När arbetsflödet har anropats försöker värden avbryta arbetsflödet.

public sealed class LongRunningDiceRoll : Activity
{
    public OutArgument<int> D1 { get; set; }
    public OutArgument<int> D2 { get; set; }

    public LongRunningDiceRoll()
    {
        this.Implementation = () => new Sequence
        {
            Activities =
            {
                new WriteLine
                {
                    Text = "Rolling the dice for 5 seconds."
                },
                new Delay
                {
                    Duration = TimeSpan.FromSeconds(5)
                },
                new DiceRoll
                {
                    D1 = new OutArgument<int>(env => this.D1.Get(env)),
                    D2 = new OutArgument<int>(env => this.D2.Get(env))
                }
            }
        };
    }
}
AutoResetEvent syncEvent = new AutoResetEvent(false);

WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());

invoker.InvokeCompleted += delegate(object sender, InvokeCompletedEventArgs args)
{
    if (args.Cancelled)
    {
        Console.WriteLine("The workflow was cancelled.");
    }
    else if (args.Error != null)
    {
        Console.WriteLine("Exception: {0}\n{1}",
            args.Error.GetType().FullName,
            args.Error.Message);
    }
    else
    {
        Console.WriteLine("The two dice are {0} and {1}.",
            args.Outputs["D1"], args.Outputs["D2"]);
    }

    syncEvent.Set();
};

string userState = "CancelAsync Example";
invoker.InvokeAsync(userState);

Console.WriteLine("Waiting for the workflow to complete.");
Thread.Sleep(TimeSpan.FromSeconds(1));

Console.WriteLine("Attempting to cancel the workflow.");
invoker.CancelAsync(userState);

// Wait for the workflow to complete.
syncEvent.WaitOne();

Console.WriteLine("The workflow is either completed or cancelled.");

Kommentarer

Endast ett arbetsflöde som anropas av en av de InvokeAsync överlagringar som tar en userState parameter kan avbrytas.

Om annulleringen lyckas är egenskapen för den Cancelled som skickas InvokeCompletedEventArgs till InvokeCompleted hanteraren inställd på true. Annars är den inställd på false.

Gäller för