WorkflowInvoker.InvokeCompleted Evento

Definizione

Si verifica quando viene completato o annullato il flusso di lavoro richiamato da uno degli overload InvokeAsync.Occurs when the workflow invoked by one of the InvokeAsync overloads is completed or canceled.

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

Esempi

Nell'esempio seguente viene richiamato un flusso di lavoro composto da un'attività LongRunningDiceRoll.The following example invokes a workflow consisting of a LongRunningDiceRoll activity. L'attività LongRunningDiceRoll dispone di due argomenti di output che rappresentano i risultati dell'operazione di lancio dei dadi.The LongRunningDiceRoll activity has two output arguments that represent the results of the dice roll operation. Quando il flusso di lavoro viene completato questi vengono recuperati nel gestore InvokeCompleted.When the workflow completes these are retrieved in the InvokeCompleted handler.

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

Commenti

Gestirlo per determinare se un flusso di lavoro richiamato con uno degli overload InvokeAsync è stato completato correttamente e per recuperare gli argomenti di output del flusso di lavoro completato.Handle this to determine whether a workflow invoked with one of the InvokeAsync overloads completed successfully and to retrieve the output arguments of the completed workflow.

Si applica a