WorkflowInvoker.BeginInvoke Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.