Partager via


WorkflowInvoker.BeginInvoke Méthode

Définition

Appelle de façon asynchrone un flux de travail à l'aide du modèle de conception asynchrone IAsyncResult.

Surcharges

BeginInvoke(AsyncCallback, Object)

Appelle de façon asynchrone un flux de travail à l'aide de l'objet AsyncCallback spécifié et de l'état fourni par l'utilisateur.

BeginInvoke(IDictionary<String,Object>, AsyncCallback, Object)

Appelle de façon asynchrone un flux de travail à l'aide de l'objet IDictionary<TKey,TValue> spécifié des paramètres en entrée, de l'objet AsyncCallback et de l'état fourni par l'utilisateur.

BeginInvoke(TimeSpan, AsyncCallback, Object)

Appelle de façon asynchrone un flux de travail à l'aide de l'intervalle de délai d'attente, de l'objet AsyncCallback et de l'état fourni par l'utilisateur qui ont été spécifiés.

BeginInvoke(IDictionary<String,Object>, TimeSpan, AsyncCallback, Object)

Appelle de façon asynchrone un flux de travail à l'aide de l'objet IDictionary<TKey,TValue> des paramètres d'entrée, de l'intervalle de délai d'attente, de l'objet AsyncCallback et de l'état fourni par l'utilisateur qui ont été spécifiés.

Remarques

Pour plus d’informations, consultez Vue d’ensemble de la programmation asynchrone.

BeginInvoke(AsyncCallback, Object)

Appelle de façon asynchrone un flux de travail à l'aide de l'objet AsyncCallback spécifié et de l'état fourni par l'utilisateur.

public:
 IAsyncResult ^ BeginInvoke(AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginInvoke (AsyncCallback callback, object state);
member this.BeginInvoke : AsyncCallback * obj -> IAsyncResult
Public Function BeginInvoke (callback As AsyncCallback, state As Object) As IAsyncResult

Paramètres

callback
AsyncCallback

Méthode à appeler lorsque le flux de travail est terminé.

state
Object

Objet spécifique à l'application facultatif qui contient les informations sur l'opération asynchrone.

Retours

Référence à l'opération d'appel asynchrone.

Exemples

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. Ces arguments sont récupérés via l'appel de EndInvoke. Lors du retour de l’appel à EndInvoke, chaque argument de sortie, indexé par nom d’argument, est retourné dans le dictionnaire de sorties.

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))
                }
            }
        };
    }
}
static void BeginInvokeExample()
{
    WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());

    string userState = "BeginInvoke example";
    IAsyncResult result = invoker.BeginInvoke(new AsyncCallback(WorkflowCompletedCallback), userState);

    // You can inspect result from the host to determine if the workflow
    // is complete.
    Console.WriteLine("result.IsCompleted: {0}", result.IsCompleted);

    // The results of the workflow are retrieved by calling EndInvoke, which
    // can be called from the callback or from the host. If called from the
    // host, it blocks until the workflow completes. If a callback is not
    // required, pass null for the callback parameter.
    Console.WriteLine("Waiting for the workflow to complete.");
    IDictionary<string, object> outputs = invoker.EndInvoke(result);

    Console.WriteLine("The two dice are {0} and {1}.",
        outputs["D1"], outputs["D2"]);
}

static void WorkflowCompletedCallback(IAsyncResult result)
{
    Console.WriteLine("Workflow complete.");
}

Remarques

Pour être informé quand le flux de travail est terminé et extraire les paramètres de sortie du flux de travail, appelez la méthode EndInvoke à partir de la méthode callback. Si la méthode EndInvoke est appelée avant que le flux de travail ne soit terminé, elle s'interrompt jusqu'à la fin du flux de travail. 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 BeginInvoke acceptant un objet TimeSpan.

Cette méthode appelle de façon asynchrone un flux de travail à l’aide du modèle de conception asynchrone IAsyncResult. Pour plus d’informations, consultez Vue d’ensemble de la programmation asynchrone.

S’applique à

BeginInvoke(IDictionary<String,Object>, AsyncCallback, Object)

Appelle de façon asynchrone un flux de travail à l'aide de l'objet IDictionary<TKey,TValue> spécifié des paramètres en entrée, de l'objet AsyncCallback et de l'état fourni par l'utilisateur.

public:
 IAsyncResult ^ BeginInvoke(System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginInvoke (System.Collections.Generic.IDictionary<string,object> inputs, AsyncCallback callback, object state);
member this.BeginInvoke : System.Collections.Generic.IDictionary<string, obj> * AsyncCallback * obj -> IAsyncResult
Public Function BeginInvoke (inputs As IDictionary(Of String, Object), callback As AsyncCallback, state As Object) As IAsyncResult

Paramètres

inputs
IDictionary<String,Object>

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

callback
AsyncCallback

Méthode à appeler lorsque le flux de travail est terminé.

state
Object

Objet spécifique à l'application facultatif qui contient les informations sur l'opération asynchrone.

Retours

Référence à l'opération d'appel asynchrone.

Exemples

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. Ces arguments sont récupérés via l'appel de EndInvoke. Lors du retour de l’appel à EndInvoke, chaque argument de sortie, indexé par nom d’argument, est retourné dans le dictionnaire de sorties.

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))
                }
            }
        };
    }
}
static void BeginInvokeExample()
{
    WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());

    string userState = "BeginInvoke example";
    IAsyncResult result = invoker.BeginInvoke(new AsyncCallback(WorkflowCompletedCallback), userState);

    // You can inspect result from the host to determine if the workflow
    // is complete.
    Console.WriteLine("result.IsCompleted: {0}", result.IsCompleted);

    // The results of the workflow are retrieved by calling EndInvoke, which
    // can be called from the callback or from the host. If called from the
    // host, it blocks until the workflow completes. If a callback is not
    // required, pass null for the callback parameter.
    Console.WriteLine("Waiting for the workflow to complete.");
    IDictionary<string, object> outputs = invoker.EndInvoke(result);

    Console.WriteLine("The two dice are {0} and {1}.",
        outputs["D1"], outputs["D2"]);
}

static void WorkflowCompletedCallback(IAsyncResult result)
{
    Console.WriteLine("Workflow complete.");
}

Remarques

Pour être informé quand le flux de travail est terminé et extraire les paramètres de sortie du flux de travail, appelez la méthode EndInvoke à partir de la méthode callback. Si la méthode EndInvoke est appelée avant que le flux de travail ne soit terminé, elle s'interrompt jusqu'à la fin du flux de travail. 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 BeginInvoke acceptant un objet TimeSpan.

Cette méthode appelle de façon asynchrone un flux de travail à l’aide du modèle de conception asynchrone IAsyncResult. Pour plus d’informations, consultez Vue d’ensemble de la programmation asynchrone.

S’applique à

BeginInvoke(TimeSpan, AsyncCallback, Object)

Appelle de façon asynchrone un flux de travail à l'aide de l'intervalle de délai d'attente, de l'objet AsyncCallback et de l'état fourni par l'utilisateur qui ont été spécifiés.

public:
 IAsyncResult ^ BeginInvoke(TimeSpan timeout, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginInvoke (TimeSpan timeout, AsyncCallback callback, object state);
member this.BeginInvoke : TimeSpan * AsyncCallback * obj -> IAsyncResult
Public Function BeginInvoke (timeout As TimeSpan, callback As AsyncCallback, state As Object) As IAsyncResult

Paramètres

timeout
TimeSpan

Intervalle pendant lequel le flux de travail doit s'exécuter avant qu'il ne soit interrompu et qu'une exception TimeoutException ne soit levée.

callback
AsyncCallback

Méthode à appeler lorsque le flux de travail est terminé.

state
Object

Objet spécifique à l'application facultatif qui contient les informations sur l'opération asynchrone.

Retours

Référence à l'opération d'appel asynchrone.

Exemples

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. Ces arguments sont récupérés via l'appel de EndInvoke. Lors du retour de l’appel à EndInvoke, chaque argument de sortie, indexé par nom d’argument, est retourné dans le dictionnaire de sorties.

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))
                }
            }
        };
    }
}
static void BeginInvokeExample()
{
    WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());

    string userState = "BeginInvoke example";
    IAsyncResult result = invoker.BeginInvoke(new AsyncCallback(WorkflowCompletedCallback), userState);

    // You can inspect result from the host to determine if the workflow
    // is complete.
    Console.WriteLine("result.IsCompleted: {0}", result.IsCompleted);

    // The results of the workflow are retrieved by calling EndInvoke, which
    // can be called from the callback or from the host. If called from the
    // host, it blocks until the workflow completes. If a callback is not
    // required, pass null for the callback parameter.
    Console.WriteLine("Waiting for the workflow to complete.");
    IDictionary<string, object> outputs = invoker.EndInvoke(result);

    Console.WriteLine("The two dice are {0} and {1}.",
        outputs["D1"], outputs["D2"]);
}

static void WorkflowCompletedCallback(IAsyncResult result)
{
    Console.WriteLine("Workflow complete.");
}

Remarques

Pour être informé quand le flux de travail est terminé et extraire les paramètres de sortie du flux de travail, appelez la méthode EndInvoke à partir de la méthode callback. Si la méthode EndInvoke est appelée avant que le flux de travail ne soit terminé, elle s'interrompt jusqu'à la fin du flux de travail. Si le flux de travail ne se termine pas dans le délai spécifié, le flux de travail est interrompu et une exception TimeoutException est levée lorsque la méthode EndInvoke est appelée.

Notes

TimeoutException est levée uniquement si l'intervalle de délai d'attente est écoulé et que le workflow devient inactif pendant l'exécution. Un flux de travail dont le délai d'exécution dépasse l'intervalle de délai d'attente spécifié se termine correctement s'il ne devient pas inactif.

Cette méthode appelle de façon asynchrone un flux de travail à l’aide du modèle de conception asynchrone IAsyncResult. Pour plus d’informations, consultez Vue d’ensemble de la programmation asynchrone.

S’applique à

BeginInvoke(IDictionary<String,Object>, TimeSpan, AsyncCallback, Object)

Appelle de façon asynchrone un flux de travail à l'aide de l'objet IDictionary<TKey,TValue> des paramètres d'entrée, de l'intervalle de délai d'attente, de l'objet AsyncCallback et de l'état fourni par l'utilisateur qui ont été spécifiés.

public:
 IAsyncResult ^ BeginInvoke(System::Collections::Generic::IDictionary<System::String ^, System::Object ^> ^ inputs, TimeSpan timeout, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginInvoke (System.Collections.Generic.IDictionary<string,object> inputs, TimeSpan timeout, AsyncCallback callback, object state);
member this.BeginInvoke : System.Collections.Generic.IDictionary<string, obj> * TimeSpan * AsyncCallback * obj -> IAsyncResult
Public Function BeginInvoke (inputs As IDictionary(Of String, Object), timeout As TimeSpan, callback As AsyncCallback, state As Object) As IAsyncResult

Paramètres

inputs
IDictionary<String,Object>

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

timeout
TimeSpan

Intervalle pendant lequel le flux de travail doit s'exécuter avant qu'il ne soit interrompu et qu'une exception TimeoutException ne soit levée.

callback
AsyncCallback

Méthode à appeler lorsque le flux de travail est terminé.

state
Object

Objet spécifique à l'application facultatif qui contient les informations sur l'opération asynchrone.

Retours

Référence à l'opération d'appel asynchrone.

Exemples

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. Ces arguments sont récupérés via l'appel de EndInvoke. Lors du retour de l’appel à EndInvoke, chaque argument de sortie, indexé par nom d’argument, est retourné dans le dictionnaire de sorties.

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))
                }
            }
        };
    }
}
static void BeginInvokeExample()
{
    WorkflowInvoker invoker = new WorkflowInvoker(new LongRunningDiceRoll());

    string userState = "BeginInvoke example";
    IAsyncResult result = invoker.BeginInvoke(new AsyncCallback(WorkflowCompletedCallback), userState);

    // You can inspect result from the host to determine if the workflow
    // is complete.
    Console.WriteLine("result.IsCompleted: {0}", result.IsCompleted);

    // The results of the workflow are retrieved by calling EndInvoke, which
    // can be called from the callback or from the host. If called from the
    // host, it blocks until the workflow completes. If a callback is not
    // required, pass null for the callback parameter.
    Console.WriteLine("Waiting for the workflow to complete.");
    IDictionary<string, object> outputs = invoker.EndInvoke(result);

    Console.WriteLine("The two dice are {0} and {1}.",
        outputs["D1"], outputs["D2"]);
}

static void WorkflowCompletedCallback(IAsyncResult result)
{
    Console.WriteLine("Workflow complete.");
}

Remarques

Pour être informé quand le flux de travail est terminé et extraire les paramètres de sortie du flux de travail, appelez la méthode EndInvoke à partir de la méthode callback. Si la méthode EndInvoke est appelée avant que le flux de travail ne soit terminé, elle s'interrompt jusqu'à la fin du flux de travail. Si le flux de travail ne se termine pas dans le délai spécifié, le flux de travail est interrompu et une exception TimeoutException est levée lorsque la méthode EndInvoke est appelée.

Notes

TimeoutException est levée uniquement si l'intervalle de délai d'attente est écoulé et que le workflow devient inactif pendant l'exécution. Un flux de travail dont le délai d'exécution dépasse l'intervalle de délai d'attente spécifié se termine correctement s'il ne devient pas inactif.

Cette méthode appelle de façon asynchrone un flux de travail à l’aide du modèle de conception asynchrone IAsyncResult. Pour plus d’informations, consultez Vue d’ensemble de la programmation asynchrone.

S’applique à