WorkflowInvoker.BeginInvoke Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Invoca un flujo de trabajo de forma asincrónica mediante el IAsyncResult patrón de diseño asincrónico.
Sobrecargas
| Nombre | Description |
|---|---|
| BeginInvoke(AsyncCallback, Object) |
Invoca un flujo de trabajo de forma asincrónica mediante el estado especificado AsyncCallback y proporcionado por el usuario. |
| BeginInvoke(IDictionary<String,Object>, AsyncCallback, Object) |
Invoca un flujo de trabajo de forma asincrónica mediante el especificado IDictionary<TKey,TValue> de parámetros de entrada, AsyncCallbacky el estado proporcionado por el usuario. |
| BeginInvoke(TimeSpan, AsyncCallback, Object) |
Invoca un flujo de trabajo de forma asincrónica mediante el intervalo de tiempo de espera especificado, AsyncCallbacky el estado proporcionado por el usuario. |
| BeginInvoke(IDictionary<String,Object>, TimeSpan, AsyncCallback, Object) |
Invoca un flujo de trabajo de forma asincrónica mediante el especificado IDictionary<TKey,TValue> de parámetros de entrada, intervalo de tiempo de espera, AsyncCallbacky estado proporcionado por el usuario. |
Comentarios
Para obtener más información, vea Información general sobre la programación asincrónica.
BeginInvoke(AsyncCallback, Object)
Invoca un flujo de trabajo de forma asincrónica mediante el estado especificado AsyncCallback y proporcionado por el usuario.
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
Método al que se va a llamar cuando se ha completado el flujo de trabajo.
- state
- Object
Objeto opcional específico de la aplicación que contiene información sobre la operación asincrónica.
Devoluciones
Referencia a la operación de invocación asincrónica.
Ejemplos
En el ejemplo siguiente se invoca un flujo de trabajo que consta de una LongRunningDiceRoll actividad. La LongRunningDiceRoll actividad tiene dos argumentos de salida que representan los resultados de la operación de lanzamiento de dados. Se recuperan mediante una llamada a EndInvoke. Cuando se devuelve la llamada a EndInvoke , cada argumento de salida se devuelve en el diccionario de salidas, con clave por nombre de 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.");
}
Comentarios
Para recibir una notificación cuando se complete el flujo de trabajo y recupere los parámetros de salida del flujo de trabajo, llame EndInvoke desde el callback método . Si EndInvoke se llama antes de que finalice el flujo de trabajo, se bloquea hasta que se complete el flujo de trabajo. Para configurar un intervalo de tiempo de espera en el que se debe completar el flujo de trabajo, use una de las BeginInvoke sobrecargas que toman un TimeSpan.
Este método invoca un flujo de trabajo de forma asincrónica mediante el IAsyncResult patrón de diseño asincrónico. Para obtener más información, vea Información general sobre la programación asincrónica.
Se aplica a
BeginInvoke(IDictionary<String,Object>, AsyncCallback, Object)
Invoca un flujo de trabajo de forma asincrónica mediante el especificado IDictionary<TKey,TValue> de parámetros de entrada, AsyncCallbacky el estado proporcionado por el usuario.
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>
Diccionario de parámetros de entrada para el flujo de trabajo, con clave por nombre de argumento.
- callback
- AsyncCallback
Método al que se va a llamar cuando se ha completado el flujo de trabajo.
- state
- Object
Objeto opcional específico de la aplicación que contiene información sobre la operación asincrónica.
Devoluciones
Referencia a la operación de invocación asincrónica.
Ejemplos
En el ejemplo siguiente se invoca un flujo de trabajo que consta de una LongRunningDiceRoll actividad. La LongRunningDiceRoll actividad tiene dos argumentos de salida que representan los resultados de la operación de lanzamiento de dados. Se recuperan mediante una llamada a EndInvoke. Cuando se devuelve la llamada a EndInvoke , cada argumento de salida se devuelve en el diccionario de salidas, con clave por nombre de 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.");
}
Comentarios
Para recibir una notificación cuando se complete el flujo de trabajo y recupere los parámetros de salida del flujo de trabajo, llame EndInvoke desde el callback método . Si EndInvoke se llama antes de que finalice el flujo de trabajo, se bloquea hasta que se complete el flujo de trabajo. Para configurar un intervalo de tiempo de espera en el que se debe completar el flujo de trabajo, use una de las BeginInvoke sobrecargas que toman un TimeSpan.
Este método invoca un flujo de trabajo de forma asincrónica mediante el IAsyncResult patrón de diseño asincrónico. Para obtener más información, vea Información general sobre la programación asincrónica.
Se aplica a
BeginInvoke(TimeSpan, AsyncCallback, Object)
Invoca un flujo de trabajo de forma asincrónica mediante el intervalo de tiempo de espera especificado, AsyncCallbacky el estado proporcionado por el usuario.
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
Intervalo en el que el flujo de trabajo debe completarse antes de anularlo y se produce una TimeoutException excepción .
- callback
- AsyncCallback
Método al que se va a llamar cuando se ha completado el flujo de trabajo.
- state
- Object
Objeto opcional específico de la aplicación que contiene información sobre la operación asincrónica.
Devoluciones
Referencia a la operación de invocación asincrónica.
Ejemplos
En el ejemplo siguiente se invoca un flujo de trabajo que consta de una LongRunningDiceRoll actividad. La LongRunningDiceRoll actividad tiene dos argumentos de salida que representan los resultados de la operación de lanzamiento de dados. Se recuperan mediante una llamada a EndInvoke. Cuando se devuelve la llamada a EndInvoke , cada argumento de salida se devuelve en el diccionario de salidas, con clave por nombre de 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.");
}
Comentarios
Para recibir una notificación cuando se complete el flujo de trabajo y recupere los parámetros de salida del flujo de trabajo, llame EndInvoke desde el callback método . Si EndInvoke se llama antes de que finalice el flujo de trabajo, se bloquea hasta que se complete el flujo de trabajo. Si el flujo de trabajo no se completa dentro del intervalo de tiempo de espera especificado, se anula el flujo de trabajo y se produce una TimeoutException excepción cuando se llama al EndInvoke método .
Note
Solo se lanza TimeoutException si transcurre el intervalo de tiempo de espera y el flujo de trabajo se vuelve inactivo durante la ejecución. Un flujo de trabajo que tarda más que el intervalo de tiempo de espera especificado en completarse terminará correctamente si no se vuelve inactivo.
Este método invoca un flujo de trabajo de forma asincrónica mediante el IAsyncResult patrón de diseño asincrónico. Para obtener más información, vea Información general sobre la programación asincrónica.
Se aplica a
BeginInvoke(IDictionary<String,Object>, TimeSpan, AsyncCallback, Object)
Invoca un flujo de trabajo de forma asincrónica mediante el especificado IDictionary<TKey,TValue> de parámetros de entrada, intervalo de tiempo de espera, AsyncCallbacky estado proporcionado por el usuario.
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>
Diccionario de parámetros de entrada para el flujo de trabajo, con clave por nombre de argumento.
- timeout
- TimeSpan
Intervalo en el que el flujo de trabajo debe completarse antes de anularlo y se produce una TimeoutException excepción .
- callback
- AsyncCallback
Método al que se va a llamar cuando se ha completado el flujo de trabajo.
- state
- Object
Objeto opcional específico de la aplicación que contiene información sobre la operación asincrónica.
Devoluciones
Referencia a la operación de invocación asincrónica.
Ejemplos
En el ejemplo siguiente se invoca un flujo de trabajo que consta de una LongRunningDiceRoll actividad. La LongRunningDiceRoll actividad tiene dos argumentos de salida que representan los resultados de la operación de lanzamiento de dados. Se recuperan mediante una llamada a EndInvoke. Cuando se devuelve la llamada a EndInvoke , cada argumento de salida se devuelve en el diccionario de salidas, con clave por nombre de 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.");
}
Comentarios
Para recibir una notificación cuando se complete el flujo de trabajo y recupere los parámetros de salida del flujo de trabajo, llame EndInvoke desde el callback método . Si EndInvoke se llama antes de que finalice el flujo de trabajo, se bloquea hasta que se complete el flujo de trabajo. Si el flujo de trabajo no se completa dentro del intervalo de tiempo de espera especificado, se anula el flujo de trabajo y se produce una TimeoutException excepción cuando EndInvoke se llama a .
Note
Solo se lanza TimeoutException si transcurre el intervalo de tiempo de espera y el flujo de trabajo se vuelve inactivo durante la ejecución. Un flujo de trabajo que tarda más que el intervalo de tiempo de espera especificado en completarse terminará correctamente si no se vuelve inactivo.
Este método invoca un flujo de trabajo de forma asincrónica mediante el IAsyncResult patrón de diseño asincrónico. Para obtener más información, vea Información general sobre la programación asincrónica.