WorkflowInvoker.BeginInvoke Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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).