Aracılığıyla paylaş


WorkflowInvoker.CancelAsync(Object) Yöntem

Tanım

Belirtilen userStateile çağrılan iş akışını iptal etmeye çalışır.

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

Parametreler

userState
Object

İptal etmek için iş akışının belirteci.

Örnekler

Aşağıdaki örnek, bir etkinlik içeren bir LongRunningDiceRoll iş akışını çağırır. Etkinlikte LongRunningDiceRoll zar atma işleminin sonuçlarını temsil eden iki çıkış argümanı bulunmaktadır. İş akışı çağrıldıktan sonra konak iş akışını iptal etmeye çalışır.

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

Açıklamalar

Yalnızca parametre alan aşırı yüklemelerden InvokeAsync biri tarafından çağrılan bir userState iş akışı iptal edilebilir.

İptal başarılı olursa, Cancelled işleyiciye InvokeCompleted geçirilen özelliğini InvokeCompletedEventArgs olarak ayarlanırtrue; aksi takdirde olarak ayarlanırfalse.

Şunlara uygulanır