Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

WorkflowInvoker.InvokeAsync méthode (IDictionary<String, Object>, Object)

.NET Framework (current version)
 

Date de publication : novembre 2016

Appelle de façon asynchrone un flux de travail à l'aide de l'objet IDictionary<TKey, TValue> des paramètres d'entrée qui est spécifié et d'un identificateur unique.

Espace de noms:   System.Activities
Assembly:  System.Activities (dans System.Activities.dll)

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

Paramètres

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

Dictionnaire des paramètres d’entrée du flux de travail, indexés par nom d’argument.

userState
Type: System.Object

Objet fourni par l'utilisateur permettant de distinguer cet appel asynchrone particulier des autres opérations courantes d'appel asynchrone.

Le paramètre userState doit être unique à travers toutes les opérations InvokeAsync en cours d'exécution pour l'activité actuelle. Si userState n'est pas unique, une exception ArgumentException est levée userState permet d'identifier le flux de travail dans l'événement InvokeCompleted et d'annuler le flux de travail à l'aide de la méthode CancelAsync.

Pour être informé de la fin du flux de travail, gérez l'événement InvokeCompleted. Pour configurer un intervalle de délai d'attente au cours duquel le flux de travail doit être exécuté, utilisez l'une des surcharges de InvokeAsync acceptant un objet TimeSpan.

Cette méthode appelle de façon asynchrone un flux de travail à l'aide du modèle de conception asynchrone basé sur les événements.Pour plus d'informations, consultezEvent-based Asynchronous Pattern Overview.

L'exemple suivant appelle un flux de travail composé d'une activité LongRunningDiceRoll. L'activité LongRunningDiceRoll a deux arguments de sortie qui représentent les résultats du jet de dés. Lorsque le flux de travail se termine, ces arguments sont récupérés dans le gestionnaire d'événements 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
Disponible depuis 4.0
Retour au début
Afficher: