WorkflowInvoker.BeginInvoke Metoda

Definicja

Asynchronicznie wywołuje przepływ pracy przy użyciu IAsyncResult asynchronicznego wzorca projektowego.

Przeciążenia

BeginInvoke(AsyncCallback, Object)

Wywołuje przepływ pracy asynchronicznie przy użyciu określonego AsyncCallback i dostarczonego przez użytkownika stanu.

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

Wywołuje przepływ pracy asynchronicznie przy użyciu określonych IDictionary<TKey,TValue> parametrów wejściowych, AsyncCallbacki stanu podanego przez użytkownika.

BeginInvoke(TimeSpan, AsyncCallback, Object)

Wywołuje przepływ pracy asynchronicznie przy użyciu określonego interwału limitu czasu, AsyncCallbacki stanu podanego przez użytkownika.

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

Wywołuje przepływ pracy asynchronicznie przy użyciu określonych IDictionary<TKey,TValue> parametrów wejściowych, interwału limitu czasu i AsyncCallbackstanu podanego przez użytkownika.

Uwagi

Aby uzyskać więcej informacji, zobacz Asynchronous Programming Overview (Omówienie programowania asynchronicznego).

BeginInvoke(AsyncCallback, Object)

Wywołuje przepływ pracy asynchronicznie przy użyciu określonego AsyncCallback i dostarczonego przez użytkownika stanu.

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

Parametry

callback
AsyncCallback

Metoda, która ma zostać wywołana po zakończeniu przepływu pracy.

state
Object

Opcjonalny obiekt specyficzny dla aplikacji, który zawiera informacje o operacji asynchronicznej.

Zwraca

Odwołanie do operacji wywołania asynchronicznego.

Przykłady

Poniższy przykład wywołuje przepływ pracy składający się z LongRunningDiceRoll działania. Działanie LongRunningDiceRoll ma dwa argumenty wyjściowe reprezentujące wyniki operacji rzutowania kostką. Są one pobierane przez wywołanie metody EndInvoke. Gdy wywołanie funkcji EndInvoke zwraca, każdy argument wyjściowy jest zwracany w słowniku danych wyjściowych, kluczem według nazwy argumentu.

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

Uwagi

Aby zostać powiadomionym o zakończeniu przepływu pracy i pobraniu parametrów wyjściowych przepływu pracy, wywołaj EndInvoke metodę callback . Jeśli EndInvoke jest wywoływana przed ukończeniem przepływu pracy, blokuje do czasu ukończenia przepływu pracy. Aby skonfigurować interwał limitu czasu, w którym przepływ pracy musi zostać ukończony, użyj jednego z BeginInvoke przeciążeń, które zajmują wartość TimeSpan.

Ta metoda wywołuje asynchronicznie przepływ pracy przy użyciu IAsyncResult asynchronicznego wzorca projektowego. Aby uzyskać więcej informacji, zobacz Asynchronous Programming Overview (Omówienie programowania asynchronicznego).

Dotyczy

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

Wywołuje przepływ pracy asynchronicznie przy użyciu określonych IDictionary<TKey,TValue> parametrów wejściowych, AsyncCallbacki stanu podanego przez użytkownika.

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

Parametry

inputs
IDictionary<String,Object>

Słownik parametrów wejściowych przepływu pracy, do których kluczem jest nazwa argumentu.

callback
AsyncCallback

Metoda, która ma zostać wywołana po zakończeniu przepływu pracy.

state
Object

Opcjonalny obiekt specyficzny dla aplikacji, który zawiera informacje o operacji asynchronicznej.

Zwraca

Odwołanie do operacji wywołania asynchronicznego.

Przykłady

Poniższy przykład wywołuje przepływ pracy składający się z LongRunningDiceRoll działania. Działanie LongRunningDiceRoll ma dwa argumenty wyjściowe reprezentujące wyniki operacji rzutowania kostką. Są one pobierane przez wywołanie metody EndInvoke. Gdy wywołanie funkcji EndInvoke zwraca, każdy argument wyjściowy jest zwracany w słowniku danych wyjściowych, kluczem według nazwy argumentu.

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

Uwagi

Aby zostać powiadomionym o zakończeniu przepływu pracy i pobraniu parametrów wyjściowych przepływu pracy, wywołaj EndInvoke metodę callback . Jeśli EndInvoke jest wywoływana przed ukończeniem przepływu pracy, blokuje do czasu ukończenia przepływu pracy. Aby skonfigurować interwał limitu czasu, w którym przepływ pracy musi zostać ukończony, użyj jednego z BeginInvoke przeciążeń, które zajmują wartość TimeSpan.

Ta metoda wywołuje asynchronicznie przepływ pracy przy użyciu IAsyncResult asynchronicznego wzorca projektowego. Aby uzyskać więcej informacji, zobacz Asynchronous Programming Overview (Omówienie programowania asynchronicznego).

Dotyczy

BeginInvoke(TimeSpan, AsyncCallback, Object)

Wywołuje przepływ pracy asynchronicznie przy użyciu określonego interwału limitu czasu, AsyncCallbacki stanu podanego przez użytkownika.

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

Parametry

timeout
TimeSpan

Interwał, w którym przepływ pracy musi zostać zakończony przed przerwaniem i TimeoutException jest zgłaszany.

callback
AsyncCallback

Metoda, która ma zostać wywołana po zakończeniu przepływu pracy.

state
Object

Opcjonalny obiekt specyficzny dla aplikacji, który zawiera informacje o operacji asynchronicznej.

Zwraca

Odwołanie do operacji wywołania asynchronicznego.

Przykłady

Poniższy przykład wywołuje przepływ pracy składający się z LongRunningDiceRoll działania. Działanie LongRunningDiceRoll ma dwa argumenty wyjściowe reprezentujące wyniki operacji rzutowania kostką. Są one pobierane przez wywołanie metody EndInvoke. Gdy wywołanie funkcji EndInvoke zwraca, każdy argument wyjściowy jest zwracany w słowniku danych wyjściowych, kluczem według nazwy argumentu.

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

Uwagi

Aby zostać powiadomionym o zakończeniu przepływu pracy i pobraniu parametrów wyjściowych przepływu pracy, wywołaj EndInvoke metodę callback . Jeśli EndInvoke jest wywoływana przed ukończeniem przepływu pracy, blokuje do czasu ukończenia przepływu pracy. Jeśli przepływ pracy nie zostanie ukończony w określonym interwale limitu czasu, przepływ pracy zostanie przerwany i TimeoutException zostanie zgłoszony po wywołaniu EndInvoke metody.

Uwaga

Parametr TimeoutException jest zgłaszany tylko wtedy, gdy upłynie interwał limitu czasu, a przepływ pracy stanie się bezczynny podczas wykonywania. Przepływ pracy, który trwa dłużej niż określony interwał przekroczenia limitu czasu, zostanie ukończony pomyślnie, jeśli przepływ pracy nie stanie się bezczynny.

Ta metoda wywołuje asynchronicznie przepływ pracy przy użyciu IAsyncResult asynchronicznego wzorca projektowego. Aby uzyskać więcej informacji, zobacz Asynchronous Programming Overview (Omówienie programowania asynchronicznego).

Dotyczy

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

Wywołuje przepływ pracy asynchronicznie przy użyciu określonych IDictionary<TKey,TValue> parametrów wejściowych, interwału limitu czasu i AsyncCallbackstanu podanego przez użytkownika.

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

Parametry

inputs
IDictionary<String,Object>

Słownik parametrów wejściowych przepływu pracy, do których kluczem jest nazwa argumentu.

timeout
TimeSpan

Interwał, w którym przepływ pracy musi zostać zakończony przed przerwaniem i TimeoutException jest zgłaszany.

callback
AsyncCallback

Metoda, która ma zostać wywołana po zakończeniu przepływu pracy.

state
Object

Opcjonalny obiekt specyficzny dla aplikacji, który zawiera informacje o operacji asynchronicznej.

Zwraca

Odwołanie do operacji wywołania asynchronicznego.

Przykłady

Poniższy przykład wywołuje przepływ pracy składający się z LongRunningDiceRoll działania. Działanie LongRunningDiceRoll ma dwa argumenty wyjściowe reprezentujące wyniki operacji rzutowania kostką. Są one pobierane przez wywołanie metody EndInvoke. Gdy wywołanie funkcji EndInvoke zwraca, każdy argument wyjściowy jest zwracany w słowniku danych wyjściowych, kluczem według nazwy argumentu.

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

Uwagi

Aby zostać powiadomionym o zakończeniu przepływu pracy i pobraniu parametrów wyjściowych przepływu pracy, wywołaj EndInvoke metodę callback . Jeśli EndInvoke jest wywoływana przed ukończeniem przepływu pracy, blokuje do czasu ukończenia przepływu pracy. Jeśli przepływ pracy nie zostanie ukończony w określonym interwale limitu czasu, przepływ pracy zostanie przerwany i TimeoutException zostanie zgłoszony po EndInvoke wywołaniu.

Uwaga

Parametr TimeoutException jest zgłaszany tylko wtedy, gdy upłynie interwał limitu czasu, a przepływ pracy stanie się bezczynny podczas wykonywania. Przepływ pracy, który trwa dłużej niż określony interwał przekroczenia limitu czasu, zostanie ukończony pomyślnie, jeśli przepływ pracy nie stanie się bezczynny.

Ta metoda wywołuje asynchronicznie przepływ pracy przy użyciu IAsyncResult asynchronicznego wzorca projektowego. Aby uzyskać więcej informacji, zobacz Asynchronous Programming Overview (Omówienie programowania asynchronicznego).

Dotyczy