Compartir vía


WorkflowInvoker.BeginInvoke Método

Definición

Invoca de forma asincrónica un flujo de trabajo usando el modelo de diseño asincrónico de la interfaz IAsyncResult.

Sobrecargas

BeginInvoke(AsyncCallback, Object)

Invoca un flujo de trabajo de forma asincrónica usando el objeto AsyncCallback especificado y el estado proporcionado por el usuario.

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

Invoca un flujo de trabajo de forma asincrónica utilizando el diccionario de parámetros de entrada IDictionary<TKey,TValue> especificado, el delegado AsyncCallback y el estado proporcionado por el usuario.

BeginInvoke(TimeSpan, AsyncCallback, Object)

Invoca un flujo de trabajo de forma asincrónica usando el intervalo de tiempo de espera, el delegado AsyncCallback y el estado proporcionado por el usuario especificados.

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

Invoca un flujo de trabajo de forma asincrónica usando la interfaz IDictionary<TKey,TValue> de parámetros de entrada, el intervalo de tiempo de espera, el delegado AsyncCallback y el estado proporcionado por el usuario especificados.

Comentarios

Para obtener más información, consulte Introducción a la programación asincrónica.

BeginInvoke(AsyncCallback, Object)

Invoca un flujo de trabajo de forma asincrónica usando el objeto AsyncCallback especificado y el estado 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

El método al que 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 siguiente ejemplo se invoca un flujo de trabajo formado por una actividad LongRunningDiceRoll. La actividad LongRunningDiceRoll tiene dos argumentos de salida que representan los resultados de la operación de tirar los dados. Se recuperan llamando al método EndInvoke. Cuando la llamada al método EndInvoke devuelve resultados, cada uno de los argumentos de salida se devuelve en el diccionario de salidas, ordenados 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 recuperar los parámetros de salida de dicho flujo de trabajo, llame a EndInvoke desde el método callback. Si se llama al método EndInvoke antes de que se complete el flujo de trabajo, la llamada queda bloqueada hasta que se completa 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 sobrecargas BeginInvoke que toman una estructura TimeSpan.

Este método invoca de forma asincrónica un flujo de trabajo usando el modelo de diseño asincrónico de la interfaz IAsyncResult. Para obtener más información, consulte Introducción a la programación asincrónica.

Se aplica a

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

Invoca un flujo de trabajo de forma asincrónica utilizando el diccionario de parámetros de entrada IDictionary<TKey,TValue> especificado, el delegado AsyncCallback y 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>

El diccionario de parámetros de entrada para el flujo de trabajo, ordenados por nombre de argumento.

callback
AsyncCallback

El método al que 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 siguiente ejemplo se invoca un flujo de trabajo formado por una actividad LongRunningDiceRoll. La actividad LongRunningDiceRoll tiene dos argumentos de salida que representan los resultados de la operación de tirar los dados. Se recuperan llamando al método EndInvoke. Cuando la llamada al método EndInvoke devuelve resultados, cada uno de los argumentos de salida se devuelve en el diccionario de salidas, ordenados 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 recuperar los parámetros de salida de dicho flujo de trabajo, llame a EndInvoke desde el método callback. Si se llama al método EndInvoke antes de que se complete el flujo de trabajo, la llamada queda bloqueada hasta que se completa 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 sobrecargas BeginInvoke que toman una estructura TimeSpan.

Este método invoca de forma asincrónica un flujo de trabajo usando el modelo de diseño asincrónico de la interfaz IAsyncResult. Para obtener más información, consulte Introducción a la programación asincrónica.

Se aplica a

BeginInvoke(TimeSpan, AsyncCallback, Object)

Invoca un flujo de trabajo de forma asincrónica usando el intervalo de tiempo de espera, el delegado AsyncCallback y el estado proporcionado por el usuario 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

Intervalo de tiempo en el que se debe completar el flujo de trabajo antes de quedar anulado y de que se produzca una excepción TimeoutException.

callback
AsyncCallback

El método al que 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 siguiente ejemplo se invoca un flujo de trabajo formado por una actividad LongRunningDiceRoll. La actividad LongRunningDiceRoll tiene dos argumentos de salida que representan los resultados de la operación de tirar los dados. Se recuperan llamando al método EndInvoke. Cuando la llamada al método EndInvoke devuelve resultados, cada uno de los argumentos de salida se devuelve en el diccionario de salidas, ordenados 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 recuperar los parámetros de salida de dicho flujo de trabajo, llame a EndInvoke desde el método callback. Si se llama al método EndInvoke antes de que se complete el flujo de trabajo, la llamada queda bloqueada hasta que se completa 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 excepción TimeoutException cuando se llama al método EndInvoke.

Nota

La excepción TimeoutException solo se produce si se agota el tiempo de espera y el flujo de trabajo queda inactivo durante la ejecución. Un flujo de trabajo que tarda en completarse más tiempo que el especificado por el intervalo de tiempo de espera se completa correctamente si el flujo de trabajo no queda inactivo.

Este método invoca de forma asincrónica un flujo de trabajo usando el modelo de diseño asincrónico de la interfaz IAsyncResult. Para obtener más información, consulte Introducción a la programación asincrónica.

Se aplica a

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

Invoca un flujo de trabajo de forma asincrónica usando la interfaz IDictionary<TKey,TValue> de parámetros de entrada, el intervalo de tiempo de espera, el delegado AsyncCallback y el estado proporcionado por el usuario 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>

El diccionario de parámetros de entrada para el flujo de trabajo, ordenados por nombre de argumento.

timeout
TimeSpan

Intervalo de tiempo en el que se debe completar el flujo de trabajo antes de quedar anulado y de que se produzca una excepción TimeoutException.

callback
AsyncCallback

El método al que 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 siguiente ejemplo se invoca un flujo de trabajo formado por una actividad LongRunningDiceRoll. La actividad LongRunningDiceRoll tiene dos argumentos de salida que representan los resultados de la operación de tirar los dados. Se recuperan llamando al método EndInvoke. Cuando la llamada al método EndInvoke devuelve resultados, cada uno de los argumentos de salida se devuelve en el diccionario de salidas, ordenados 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 recuperar los parámetros de salida de dicho flujo de trabajo, llame a EndInvoke desde el método callback. Si se llama al método EndInvoke antes de que se complete el flujo de trabajo, la llamada queda bloqueada hasta que se completa 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 excepción TimeoutException cuando se llama a EndInvoke.

Nota

La excepción TimeoutException solo se produce si se agota el tiempo de espera y el flujo de trabajo queda inactivo durante la ejecución. Un flujo de trabajo que tarda en completarse más tiempo que el especificado por el intervalo de tiempo de espera se completa correctamente si el flujo de trabajo no queda inactivo.

Este método invoca de forma asincrónica un flujo de trabajo usando el modelo de diseño asincrónico de la interfaz IAsyncResult. Para obtener más información, consulte Introducción a la programación asincrónica.

Se aplica a