WorkflowInvoker.BeginInvoke Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Egy munkafolyamatot aszinkron módon hív meg az aszinkron IAsyncResult tervezési mintával.
Túlterhelések
| Name | Description |
|---|---|
| BeginInvoke(AsyncCallback, Object) |
A megadott és a felhasználó által megadott állapot használatával aszinkron módon hívja meg a AsyncCallback munkafolyamatot. |
| BeginInvoke(IDictionary<String,Object>, AsyncCallback, Object) |
A munkafolyamatot aszinkron módon hívja meg a megadott IDictionary<TKey,TValue> bemeneti paraméterek AsyncCallbackés felhasználó által megadott állapot használatával. |
| BeginInvoke(TimeSpan, AsyncCallback, Object) |
A munkafolyamatot aszinkron módon hívja meg a megadott időtúllépési időköz és AsyncCallbacka felhasználó által megadott állapot használatával. |
| BeginInvoke(IDictionary<String,Object>, TimeSpan, AsyncCallback, Object) |
A munkafolyamatot aszinkron módon hívja meg a megadott IDictionary<TKey,TValue> bemeneti paraméterek, időtúllépési időköz AsyncCallbackés felhasználó által megadott állapot használatával. |
Megjegyzések
További információ: Aszinkron programozás áttekintése.
BeginInvoke(AsyncCallback, Object)
A megadott és a felhasználó által megadott állapot használatával aszinkron módon hívja meg a AsyncCallback munkafolyamatot.
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
Paraméterek
- callback
- AsyncCallback
A munkafolyamat befejezésekor meghívandó metódus.
- state
- Object
Nem kötelező alkalmazásspecifikus objektum, amely az aszinkron művelettel kapcsolatos információkat tartalmazza.
Válaszok
Hivatkozás az aszinkron meghívási műveletre.
Példák
Az alábbi példa egy tevékenységből álló munkafolyamatot LongRunningDiceRoll hív meg. A LongRunningDiceRoll tevékenységnek két kimeneti argumentuma van, amelyek a kockatekercselési művelet eredményeit jelölik. Ezeket a rendszer hívással EndInvokekéri le. A visszahíváskor EndInvoke a kimeneti argumentumok a kimenetek szótárában lesznek visszaadva, argumentumnév alapján.
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.");
}
Megjegyzések
Ha értesítést szeretne kapni a munkafolyamat befejezéséről, és le szeretné kérni a munkafolyamat kimeneti paramétereit, hívja meg EndInvoke a callback metódust. Ha EndInvoke a munkafolyamat befejeződése előtt meghívják, a folyamat addig blokkolódik, amíg a munkafolyamat be nem fejeződik. Ha olyan időtúllépési időközt szeretne konfigurálni, amelyben a munkafolyamatnak végre kell hajtania, használja az BeginInvoke egyik túlterhelést TimeSpan, amely egy .
Ez a metódus aszinkron módon hívja meg a munkafolyamatot az aszinkron IAsyncResult tervezési mintával. További információ: Aszinkron programozás áttekintése.
A következőre érvényes:
BeginInvoke(IDictionary<String,Object>, AsyncCallback, Object)
A munkafolyamatot aszinkron módon hívja meg a megadott IDictionary<TKey,TValue> bemeneti paraméterek AsyncCallbackés felhasználó által megadott állapot használatával.
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
Paraméterek
- inputs
- IDictionary<String,Object>
A munkafolyamat bemeneti paramétereinek szótára, argumentumnévvel megadva.
- callback
- AsyncCallback
A munkafolyamat befejezésekor meghívandó metódus.
- state
- Object
Nem kötelező alkalmazásspecifikus objektum, amely az aszinkron művelettel kapcsolatos információkat tartalmazza.
Válaszok
Hivatkozás az aszinkron meghívási műveletre.
Példák
Az alábbi példa egy tevékenységből álló munkafolyamatot LongRunningDiceRoll hív meg. A LongRunningDiceRoll tevékenységnek két kimeneti argumentuma van, amelyek a kockatekercselési művelet eredményeit jelölik. Ezeket a rendszer hívással EndInvokekéri le. A visszahíváskor EndInvoke a kimeneti argumentumok a kimenetek szótárában lesznek visszaadva, argumentumnév alapján.
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.");
}
Megjegyzések
Ha értesítést szeretne kapni a munkafolyamat befejezéséről, és le szeretné kérni a munkafolyamat kimeneti paramétereit, hívja meg EndInvoke a callback metódust. Ha EndInvoke a munkafolyamat befejeződése előtt meghívják, a folyamat addig blokkolódik, amíg a munkafolyamat be nem fejeződik. Ha olyan időtúllépési időközt szeretne konfigurálni, amelyben a munkafolyamatnak végre kell hajtania, használja az BeginInvoke egyik túlterhelést TimeSpan, amely egy .
Ez a metódus aszinkron módon hívja meg a munkafolyamatot az aszinkron IAsyncResult tervezési mintával. További információ: Aszinkron programozás áttekintése.
A következőre érvényes:
BeginInvoke(TimeSpan, AsyncCallback, Object)
A munkafolyamatot aszinkron módon hívja meg a megadott időtúllépési időköz és AsyncCallbacka felhasználó által megadott állapot használatával.
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
Paraméterek
- timeout
- TimeSpan
Az az intervallum, amelyben a munkafolyamatnak le kell fejeződnie, mielőtt megszakítanák, és TimeoutException a folyamat le lesz vetve.
- callback
- AsyncCallback
A munkafolyamat befejezésekor meghívandó metódus.
- state
- Object
Nem kötelező alkalmazásspecifikus objektum, amely az aszinkron művelettel kapcsolatos információkat tartalmazza.
Válaszok
Hivatkozás az aszinkron meghívási műveletre.
Példák
Az alábbi példa egy tevékenységből álló munkafolyamatot LongRunningDiceRoll hív meg. A LongRunningDiceRoll tevékenységnek két kimeneti argumentuma van, amelyek a kockatekercselési művelet eredményeit jelölik. Ezeket a rendszer hívással EndInvokekéri le. A visszahíváskor EndInvoke a kimeneti argumentumok a kimenetek szótárában lesznek visszaadva, argumentumnév alapján.
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.");
}
Megjegyzések
Ha értesítést szeretne kapni a munkafolyamat befejezéséről, és le szeretné kérni a munkafolyamat kimeneti paramétereit, hívja meg EndInvoke a callback metódust. Ha EndInvoke a munkafolyamat befejeződése előtt meghívják, a folyamat addig blokkolódik, amíg a munkafolyamat be nem fejeződik. Ha a munkafolyamat nem fejeződik be a megadott időtúllépési intervallumon belül, a munkafolyamat megszakad, és TimeoutException a EndInvoke metódus meghívásakor a folyamat megszakad.
Note
A TimeoutException csak akkor vet ki hibát, ha az időkorlát letelik, és a munkafolyamat végrehajtás közben tétlenné válik. A megadott időtúllépési időköznél hosszabb ideig tartó munkafolyamat sikeresen befejeződik, ha a munkafolyamat nem válik tétlenné.
Ez a metódus aszinkron módon hívja meg a munkafolyamatot az aszinkron IAsyncResult tervezési mintával. További információ: Aszinkron programozás áttekintése.
A következőre érvényes:
BeginInvoke(IDictionary<String,Object>, TimeSpan, AsyncCallback, Object)
A munkafolyamatot aszinkron módon hívja meg a megadott IDictionary<TKey,TValue> bemeneti paraméterek, időtúllépési időköz AsyncCallbackés felhasználó által megadott állapot használatával.
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
Paraméterek
- inputs
- IDictionary<String,Object>
A munkafolyamat bemeneti paramétereinek szótára, argumentumnévvel megadva.
- timeout
- TimeSpan
Az az intervallum, amelyben a munkafolyamatnak le kell fejeződnie, mielőtt megszakítanák, és TimeoutException a folyamat le lesz vetve.
- callback
- AsyncCallback
A munkafolyamat befejezésekor meghívandó metódus.
- state
- Object
Nem kötelező alkalmazásspecifikus objektum, amely az aszinkron művelettel kapcsolatos információkat tartalmazza.
Válaszok
Hivatkozás az aszinkron meghívási műveletre.
Példák
Az alábbi példa egy tevékenységből álló munkafolyamatot LongRunningDiceRoll hív meg. A LongRunningDiceRoll tevékenységnek két kimeneti argumentuma van, amelyek a kockatekercselési művelet eredményeit jelölik. Ezeket a rendszer hívással EndInvokekéri le. A visszahíváskor EndInvoke a kimeneti argumentumok a kimenetek szótárában lesznek visszaadva, argumentumnév alapján.
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.");
}
Megjegyzések
Ha értesítést szeretne kapni a munkafolyamat befejezéséről, és le szeretné kérni a munkafolyamat kimeneti paramétereit, hívja meg EndInvoke a callback metódust. Ha EndInvoke a munkafolyamat befejeződése előtt meghívják, a folyamat addig blokkolódik, amíg a munkafolyamat be nem fejeződik. Ha a munkafolyamat nem fejeződik be a megadott időtúllépési időközön belül, a munkafolyamat megszakad, és TimeoutException meghívásakor a folyamat eldobódik EndInvoke .
Note
A TimeoutException csak akkor vet ki hibát, ha az időkorlát letelik, és a munkafolyamat végrehajtás közben tétlenné válik. A megadott időtúllépési időköznél hosszabb ideig tartó munkafolyamat sikeresen befejeződik, ha a munkafolyamat nem válik tétlenné.
Ez a metódus aszinkron módon hívja meg a munkafolyamatot az aszinkron IAsyncResult tervezési mintával. További információ: Aszinkron programozás áttekintése.