Compartilhar via


WorkflowInvoker.BeginInvoke Método

Definição

Invoca um fluxo de trabalho de forma assíncrona usando o padrão de design assíncrono do IAsyncResult.

Sobrecargas

BeginInvoke(AsyncCallback, Object)

Invoca um fluxo de trabalho usando de forma assíncrona o AsyncCallback especificado e o estado fornecido pelo usuário.

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

Invoca um fluxo de trabalho de forma assíncrona usando o IDictionary<TKey,TValue> de parâmetros de entrada, o AsyncCallback e o estado fornecido pelo usuário especificados.

BeginInvoke(TimeSpan, AsyncCallback, Object)

Invoca um fluxo de trabalho de forma assíncrona usando o intervalo de tempo limite, a AsyncCallback e o estado fornecido pelo usuário especificados.

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

Invoca um fluxo de trabalho de forma assíncrona usando o IDictionary<TKey,TValue> de parâmetros de entrada, o intervalo de tempo limite, o AsyncCallback e o estado fornecido pelo usuário especificados.

Comentários

Para obter mais informações, consulte Visão geral da programação assíncrona.

BeginInvoke(AsyncCallback, Object)

Invoca um fluxo de trabalho usando de forma assíncrona o AsyncCallback especificado e o estado fornecido pelo usuário.

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

Parâmetros

callback
AsyncCallback

O método a ser chamado quando o fluxo de trabalho tiver sido concluído.

state
Object

Um objeto específico do aplicativo opcional que contém informações sobre a operação assíncrona.

Retornos

Uma referência à operação invocar assíncrona.

Exemplos

O exemplo a seguir invoca um fluxo de trabalho que consiste em uma LongRunningDiceRoll atividade. A atividade de LongRunningDiceRoll tem dois argumentos de saída que representam os resultados da operação de rolagem de dados. Eles são recuperados chamando EndInvoke. Quando a chamada para EndInvoke retorna, cada argumento de saída é retornado no dicionário de saídas, chaveado pelo nome do argumento.

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

Comentários

Para ser notificado quando o fluxo de trabalho for concluído e recuperar os parâmetros de saída do fluxo de trabalho, chame EndInvoke do callback método . Se EndInvoke for chamado antes da conclusão do fluxo de trabalho, ele será bloqueado até que o fluxo de trabalho seja concluído. Para configurar um intervalo de tempo limite no qual o fluxo de trabalho deve ser concluído, use uma das BeginInvoke sobrecargas que levam um TimeSpan.

Esse método invoca um fluxo de trabalho de forma assíncrona usando o IAsyncResult padrão de design assíncrono. Para obter mais informações, consulte Visão geral da programação assíncrona.

Aplica-se a

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

Invoca um fluxo de trabalho de forma assíncrona usando o IDictionary<TKey,TValue> de parâmetros de entrada, o AsyncCallback e o estado fornecido pelo usuário especificados.

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

Parâmetros

inputs
IDictionary<String,Object>

O dicionário de parâmetros de entrada para o fluxo de trabalho, inseridos por nome de argumento.

callback
AsyncCallback

O método a ser chamado quando o fluxo de trabalho tiver sido concluído.

state
Object

Um objeto específico do aplicativo opcional que contém informações sobre a operação assíncrona.

Retornos

Uma referência à operação invocar assíncrona.

Exemplos

O exemplo a seguir invoca um fluxo de trabalho que consiste em uma LongRunningDiceRoll atividade. A atividade de LongRunningDiceRoll tem dois argumentos de saída que representam os resultados da operação de rolagem de dados. Eles são recuperados chamando EndInvoke. Quando a chamada para EndInvoke retorna, cada argumento de saída é retornado no dicionário de saídas, chaveado pelo nome do argumento.

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

Comentários

Para ser notificado quando o fluxo de trabalho for concluído e recuperar os parâmetros de saída do fluxo de trabalho, chame EndInvoke do callback método . Se EndInvoke for chamado antes da conclusão do fluxo de trabalho, ele será bloqueado até que o fluxo de trabalho seja concluído. Para configurar um intervalo de tempo limite no qual o fluxo de trabalho deve ser concluído, use uma das BeginInvoke sobrecargas que levam um TimeSpan.

Esse método invoca um fluxo de trabalho de forma assíncrona usando o IAsyncResult padrão de design assíncrono. Para obter mais informações, consulte Visão geral da programação assíncrona.

Aplica-se a

BeginInvoke(TimeSpan, AsyncCallback, Object)

Invoca um fluxo de trabalho de forma assíncrona usando o intervalo de tempo limite, a AsyncCallback e o estado fornecido pelo usuário especificados.

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

Parâmetros

timeout
TimeSpan

O intervalo no qual o fluxo de trabalho deve ser concluído antes de ele ser anulado e um TimeoutException ser gerado.

callback
AsyncCallback

O método a ser chamado quando o fluxo de trabalho tiver sido concluído.

state
Object

Um objeto específico do aplicativo opcional que contém informações sobre a operação assíncrona.

Retornos

Uma referência à operação invocar assíncrona.

Exemplos

O exemplo a seguir invoca um fluxo de trabalho que consiste em uma LongRunningDiceRoll atividade. A atividade de LongRunningDiceRoll tem dois argumentos de saída que representam os resultados da operação de rolagem de dados. Eles são recuperados chamando EndInvoke. Quando a chamada para EndInvoke retorna, cada argumento de saída é retornado no dicionário de saídas, chaveado pelo nome do argumento.

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

Comentários

Para ser notificado quando o fluxo de trabalho for concluído e recuperar os parâmetros de saída do fluxo de trabalho, chame EndInvoke do callback método . Se EndInvoke for chamado antes da conclusão do fluxo de trabalho, ele será bloqueado até que o fluxo de trabalho seja concluído. Se o fluxo de trabalho não for concluído dentro do intervalo de tempo limite especificado, o fluxo de trabalho será anulado e um TimeoutException será gerado quando o EndInvoke método for chamado.

Observação

TimeoutException é acionada somente se o intervalo de tempo limite decorre e fluxo de trabalho se torna ocioso durante a execução. Um fluxo de trabalho que recebe mais tempo do intervalo de tempo limite especificado para concluir concluída com êxito se o fluxo de trabalho não se torna ocioso.

Esse método invoca um fluxo de trabalho de forma assíncrona usando o IAsyncResult padrão de design assíncrono. Para obter mais informações, consulte Visão geral da programação assíncrona.

Aplica-se a

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

Invoca um fluxo de trabalho de forma assíncrona usando o IDictionary<TKey,TValue> de parâmetros de entrada, o intervalo de tempo limite, o AsyncCallback e o estado fornecido pelo usuário especificados.

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

Parâmetros

inputs
IDictionary<String,Object>

O dicionário de parâmetros de entrada para o fluxo de trabalho, inseridos por nome de argumento.

timeout
TimeSpan

O intervalo no qual o fluxo de trabalho deve ser concluído antes de ele ser anulado e um TimeoutException ser gerado.

callback
AsyncCallback

O método a ser chamado quando o fluxo de trabalho tiver sido concluído.

state
Object

Um objeto específico do aplicativo opcional que contém informações sobre a operação assíncrona.

Retornos

Uma referência à operação invocar assíncrona.

Exemplos

O exemplo a seguir invoca um fluxo de trabalho que consiste em uma LongRunningDiceRoll atividade. A atividade de LongRunningDiceRoll tem dois argumentos de saída que representam os resultados da operação de rolagem de dados. Eles são recuperados chamando EndInvoke. Quando a chamada para EndInvoke retorna, cada argumento de saída é retornado no dicionário de saídas, chaveado pelo nome do argumento.

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

Comentários

Para ser notificado quando o fluxo de trabalho for concluído e recuperar os parâmetros de saída do fluxo de trabalho, chame EndInvoke do callback método . Se EndInvoke for chamado antes da conclusão do fluxo de trabalho, ele será bloqueado até que o fluxo de trabalho seja concluído. Se o fluxo de trabalho não for concluído dentro do intervalo de tempo limite especificado, o fluxo de trabalho será anulado e um TimeoutException será gerado quando EndInvoke for chamado.

Observação

TimeoutException é acionada somente se o intervalo de tempo limite decorre e fluxo de trabalho se torna ocioso durante a execução. Um fluxo de trabalho que recebe mais tempo do intervalo de tempo limite especificado para concluir concluída com êxito se o fluxo de trabalho não se torna ocioso.

Esse método invoca um fluxo de trabalho de forma assíncrona usando o IAsyncResult padrão de design assíncrono. Para obter mais informações, consulte Visão geral da programação assíncrona.

Aplica-se a