Metodo WorkflowInvoker.InvokeAsync (IDictionary<String, Object>)

.NET Framework (current version)
 

Data di pubblicazione: ottobre 2016

Richiama un flusso di lavoro in modo asincrono utilizzando il IDictionary<TKey, TValue> specificato dei parametri di input.

Spazio dei nomi:   System.Activities
Assembly:  System.Activities (in System.Activities.dll)

public void InvokeAsync(
	IDictionary<string, object> inputs
)

Parametri

inputs
Type: System.Collections.Generic.IDictionary<String, Object>

Il dizionario di parametri di input al flusso di lavoro codificati dal nome dell'argomento.

Per ricevere una notifica quando il flusso di lavoro è completo, gestire il InvokeCompleted. Per configurare un intervallo di timeout nel quale il flusso di lavoro deve essere completato, usare uno degli overload InvokeAsync che accettano un oggetto TimeSpan.

Questo metodo richiama un flusso di lavoro in modo asincrono utilizzando il modello di struttura asincrono basato su eventi.Per altre informazioni, vedereEvent-based Asynchronous Pattern Overview.

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. Quando il flusso di lavoro viene completato questi vengono recuperati nel gestore InvokeCompleted.

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

.NET Framework
Disponibile da 4.0
Torna all'inizio
Mostra: