Condividi tramite


WorkflowInvoker.CancelAsync(Object) Metodo

Definizione

Tenta di annullare il flusso di lavoro che è stato richiamato con il userState specificato.

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

Parametri

userState
Object

Il token per il flusso di lavoro da annullare.

Esempio

Nell'esempio seguente viene richiamato un flusso di lavoro composto da un'attività LongRunningDiceRoll. L'attività LongRunningDiceRoll dispone di due argomenti di output che rappresentano i risultati dell'operazione di lancio dei dadi. Una volta richiamato il flusso di lavoro, l'host tenta di annullarlo.

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 == true)
    {
        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.");

Commenti

Solo un flusso di lavoro richiamato da uno degli overload InvokeAsync che accetta il parametro userState può essere annullato.

Se l'annullamento ha esito positivo, la proprietà del InvokeCompletedEventArgs gestore passato InvokeCompleted al gestore è impostata su true; in caso contrario, è impostata su false.Cancelled

Si applica a