Share via


WorkflowInvoker.InvokeCompleted Olay

Tanım

Aşırı yüklemelerden biri InvokeAsync tarafından çağrılan iş akışı tamamlandığında veya iptal edildiğinde gerçekleşir.

public:
 event EventHandler<System::Activities::InvokeCompletedEventArgs ^> ^ InvokeCompleted;
public event EventHandler<System.Activities.InvokeCompletedEventArgs> InvokeCompleted;
member this.InvokeCompleted : EventHandler<System.Activities.InvokeCompletedEventArgs> 
Public Custom Event InvokeCompleted As EventHandler(Of InvokeCompletedEventArgs) 
Public Event InvokeCompleted As EventHandler(Of InvokeCompletedEventArgs) 

Olay Türü

Örnekler

Aşağıdaki örnek, bir etkinlik içeren LongRunningDiceRoll bir iş akışını çağırır. Etkinlikte LongRunningDiceRoll zar atma işleminin sonuçlarını temsil eden iki çıkış bağımsız değişkeni vardır. İş akışı tamamlandığında bunlar işleyicide InvokeCompleted alını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 == true)
    {
        Console.WriteLine("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();
};

invoker.InvokeAsync("InvokeAsync Example");

Console.WriteLine("Waiting for the workflow to complete.");

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

Console.WriteLine("The workflow is complete.");

Açıklamalar

Aşırı yüklemelerden biriyle çağrılan bir iş akışının InvokeAsync başarıyla tamamlanıp tamamlanmadığını belirlemek ve tamamlanan iş akışının çıkış bağımsız değişkenlerini almak için bunu işleyebilirsiniz.

Şunlara uygulanır