WorkflowInvoker.BeginInvoke Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vyvolá pracovní postup asynchronně pomocí vzoru asynchronního návrhu IAsyncResult .
Přetížení
BeginInvoke(AsyncCallback, Object) |
Vyvolá pracovní postup asynchronně pomocí zadaného AsyncCallback a uživatelem zadaného stavu. |
BeginInvoke(IDictionary<String,Object>, AsyncCallback, Object) |
Vyvolá pracovní postup asynchronně pomocí zadaných IDictionary<TKey,TValue> vstupních parametrů AsyncCallbacka stavu zadaného uživatelem. |
BeginInvoke(TimeSpan, AsyncCallback, Object) |
Vyvolá pracovní postup asynchronně pomocí zadaného intervalu časového limitu AsyncCallbacka stavu zadaného uživatelem. |
BeginInvoke(IDictionary<String,Object>, TimeSpan, AsyncCallback, Object) |
Vyvolá pracovní postup asynchronně pomocí zadaných IDictionary<TKey,TValue> vstupních parametrů, intervalu časového limitu AsyncCallbacka stavu zadaného uživatelem. |
Poznámky
Další informace najdete v tématu Přehled asynchronního programování.
BeginInvoke(AsyncCallback, Object)
Vyvolá pracovní postup asynchronně pomocí zadaného AsyncCallback a uživatelem zadaného stavu.
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, která se má volat po dokončení pracovního postupu.
- state
- Object
Volitelný objekt specifický pro aplikaci, který obsahuje informace o asynchronní operaci.
Návraty
Odkaz na asynchronní operaci vyvolání.
Příklady
Následující příklad vyvolá pracovní postup, který se skládá z LongRunningDiceRoll
aktivity. Aktivita LongRunningDiceRoll
má dva výstupní argumenty, které představují výsledky operace hodu kostkou. Načtou se voláním EndInvoke. Při volání se EndInvoke vrátí každý výstupní argument ve slovníku outputs s klíčem podle názvu 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.");
}
Poznámky
Chcete-li být upozorněni na dokončení pracovního postupu a načíst výstupní parametry pracovního postupu, zavolejte EndInvoke z callback
metody. Pokud EndInvoke je volána před dokončením pracovního postupu, blokuje se, dokud se pracovní postup neskončí. Pokud chcete nakonfigurovat interval časového limitu, ve kterém se musí pracovní postup dokončit, použijte jedno z BeginInvoke přetížení, které zabírají TimeSpan.
Tato metoda vyvolá pracovní postup asynchronně pomocí vzoru asynchronního návrhu IAsyncResult . Další informace najdete v tématu Přehled asynchronního programování.
Platí pro
BeginInvoke(IDictionary<String,Object>, AsyncCallback, Object)
Vyvolá pracovní postup asynchronně pomocí zadaných IDictionary<TKey,TValue> vstupních parametrů AsyncCallbacka stavu zadaného uživatelem.
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>
Slovník vstupních parametrů pracovního postupu s klíčem podle názvu argumentu.
- callback
- AsyncCallback
Metoda, která se má volat po dokončení pracovního postupu.
- state
- Object
Volitelný objekt specifický pro aplikaci, který obsahuje informace o asynchronní operaci.
Návraty
Odkaz na asynchronní operaci vyvolání.
Příklady
Následující příklad vyvolá pracovní postup, který se skládá z LongRunningDiceRoll
aktivity. Aktivita LongRunningDiceRoll
má dva výstupní argumenty, které představují výsledky operace hodu kostkou. Načtou se voláním EndInvoke. Při volání se EndInvoke vrátí každý výstupní argument ve slovníku outputs s klíčem podle názvu 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.");
}
Poznámky
Chcete-li být upozorněni na dokončení pracovního postupu a načíst výstupní parametry pracovního postupu, zavolejte EndInvoke z callback
metody. Pokud EndInvoke je volána před dokončením pracovního postupu, blokuje se, dokud se pracovní postup neskončí. Pokud chcete nakonfigurovat interval časového limitu, ve kterém se musí pracovní postup dokončit, použijte jedno z BeginInvoke přetížení, které zabírají TimeSpan.
Tato metoda vyvolá pracovní postup asynchronně pomocí vzoru asynchronního návrhu IAsyncResult . Další informace najdete v tématu Přehled asynchronního programování.
Platí pro
BeginInvoke(TimeSpan, AsyncCallback, Object)
Vyvolá pracovní postup asynchronně pomocí zadaného intervalu časového limitu AsyncCallbacka stavu zadaného uživatelem.
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
Interval, ve kterém se pracovní postup musí dokončit, než bude přerušen a TimeoutException vyvolán.
- callback
- AsyncCallback
Metoda, která se má volat po dokončení pracovního postupu.
- state
- Object
Volitelný objekt specifický pro aplikaci, který obsahuje informace o asynchronní operaci.
Návraty
Odkaz na asynchronní operaci vyvolání.
Příklady
Následující příklad vyvolá pracovní postup, který se skládá z LongRunningDiceRoll
aktivity. Aktivita LongRunningDiceRoll
má dva výstupní argumenty, které představují výsledky operace hodu kostkou. Načtou se voláním EndInvoke. Při volání se EndInvoke vrátí každý výstupní argument ve slovníku outputs s klíčem podle názvu 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.");
}
Poznámky
Chcete-li být upozorněni na dokončení pracovního postupu a načíst výstupní parametry pracovního postupu, zavolejte EndInvoke z callback
metody. Pokud EndInvoke je volána před dokončením pracovního postupu, blokuje se, dokud se pracovní postup neskončí. Pokud se pracovní postup nedokončí v zadaném intervalu časového limitu, pracovní postup se přeruší a TimeoutException vyvolá se při EndInvoke zavolání metody.
Poznámka
Vyvolá TimeoutException se pouze v případě, že uběhl časový limit a pracovní postup se během provádění stane nečinný. Pracovní postup, který trvá déle, než je zadaný časový limit, se úspěšně dokončí, pokud pracovní postup nebude nečinný.
Tato metoda vyvolá pracovní postup asynchronně pomocí vzoru asynchronního návrhu IAsyncResult . Další informace najdete v tématu Přehled asynchronního programování.
Platí pro
BeginInvoke(IDictionary<String,Object>, TimeSpan, AsyncCallback, Object)
Vyvolá pracovní postup asynchronně pomocí zadaných IDictionary<TKey,TValue> vstupních parametrů, intervalu časového limitu AsyncCallbacka stavu zadaného uživatelem.
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>
Slovník vstupních parametrů pracovního postupu s klíčem podle názvu argumentu.
- timeout
- TimeSpan
Interval, ve kterém se pracovní postup musí dokončit, než bude přerušen a TimeoutException vyvolán.
- callback
- AsyncCallback
Metoda, která se má volat po dokončení pracovního postupu.
- state
- Object
Volitelný objekt specifický pro aplikaci, který obsahuje informace o asynchronní operaci.
Návraty
Odkaz na asynchronní operaci vyvolání.
Příklady
Následující příklad vyvolá pracovní postup, který se skládá z LongRunningDiceRoll
aktivity. Aktivita LongRunningDiceRoll
má dva výstupní argumenty, které představují výsledky operace hodu kostkou. Načtou se voláním EndInvoke. Při volání se EndInvoke vrátí každý výstupní argument ve slovníku outputs s klíčem podle názvu 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.");
}
Poznámky
Chcete-li být upozorněni na dokončení pracovního postupu a načíst výstupní parametry pracovního postupu, zavolejte EndInvoke z callback
metody. Pokud EndInvoke je volána před dokončením pracovního postupu, blokuje se, dokud se pracovní postup neskončí. Pokud se pracovní postup nedokončí v zadaném intervalu časového limitu, pracovní postup se přeruší a TimeoutException vyvolá se při EndInvoke jeho zavolání.
Poznámka
Vyvolá TimeoutException se pouze v případě, že uběhl časový limit a pracovní postup se během provádění stane nečinný. Pracovní postup, který trvá déle, než je zadaný časový limit, se úspěšně dokončí, pokud pracovní postup nebude nečinný.
Tato metoda vyvolá pracovní postup asynchronně pomocí vzoru asynchronního návrhu IAsyncResult . Další informace najdete v tématu Přehled asynchronního programování.