WorkflowInvoker.BeginInvoke Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Roept een werkstroom asynchroon aan met behulp van het IAsyncResult asynchrone ontwerppatroon.
Overloads
| Name | Description |
|---|---|
| BeginInvoke(AsyncCallback, Object) |
Roept een werkstroom asynchroon aan met behulp van de opgegeven en door de gebruiker opgegeven AsyncCallback status. |
| BeginInvoke(IDictionary<String,Object>, AsyncCallback, Object) |
Roept asynchroon een werkstroom aan met behulp van de opgegeven IDictionary<TKey,TValue> invoerparameters AsyncCallbacken de door de gebruiker opgegeven status. |
| BeginInvoke(TimeSpan, AsyncCallback, Object) |
Roept een werkstroom asynchroon aan met behulp van het opgegeven time-outinterval AsyncCallbacken de door de gebruiker opgegeven status. |
| BeginInvoke(IDictionary<String,Object>, TimeSpan, AsyncCallback, Object) |
Roept een werkstroom asynchroon aan met behulp van de opgegeven IDictionary<TKey,TValue> invoerparameters, time-outinterval AsyncCallbacken door de gebruiker opgegeven status. |
Opmerkingen
Zie Overzicht van Asynchroon programmeren voor meer informatie.
BeginInvoke(AsyncCallback, Object)
Roept een werkstroom asynchroon aan met behulp van de opgegeven en door de gebruiker opgegeven AsyncCallback status.
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
Parameters
- callback
- AsyncCallback
De methode die moet worden aangeroepen wanneer de werkstroom is voltooid.
- state
- Object
Een optioneel toepassingsspecifiek object dat informatie bevat over de asynchrone bewerking.
Retouren
Een verwijzing naar de asynchrone aanroepbewerking.
Voorbeelden
In het volgende voorbeeld wordt een werkstroom aangeroepen die bestaat uit een LongRunningDiceRoll activiteit. De LongRunningDiceRoll activiteit heeft twee uitvoerargumenten die de resultaten van de dobbelsteendraaibewerking vertegenwoordigen. Deze worden opgehaald door aan te roepen EndInvoke. Wanneer de aanroep die moet EndInvoke worden geretourneerd, wordt elk uitvoerargument geretourneerd in de uitvoerwoordenlijst, gesleuteld op argumentnaam.
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.");
}
Opmerkingen
Als u een melding wilt ontvangen wanneer de werkstroom is voltooid en de uitvoerparameters van de werkstroom ophaalt, roept EndInvoke u de callback methode aan. Als EndInvoke de werkstroom wordt aangeroepen voordat de werkstroom is voltooid, wordt deze geblokkeerd totdat de werkstroom is voltooid. Als u een time-outinterval wilt configureren waarin de werkstroom moet worden voltooid, gebruikt u een van de BeginInvoke overbelastingen die een TimeSpan.
Met deze methode wordt een werkstroom asynchroon aangeroepen met behulp van het IAsyncResult asynchrone ontwerppatroon. Zie Overzicht van Asynchroon programmeren voor meer informatie.
Van toepassing op
BeginInvoke(IDictionary<String,Object>, AsyncCallback, Object)
Roept asynchroon een werkstroom aan met behulp van de opgegeven IDictionary<TKey,TValue> invoerparameters AsyncCallbacken de door de gebruiker opgegeven status.
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
Parameters
- inputs
- IDictionary<String,Object>
De woordenlijst met invoerparameters voor de werkstroom, met de sleutel op argumentnaam.
- callback
- AsyncCallback
De methode die moet worden aangeroepen wanneer de werkstroom is voltooid.
- state
- Object
Een optioneel toepassingsspecifiek object dat informatie bevat over de asynchrone bewerking.
Retouren
Een verwijzing naar de asynchrone aanroepbewerking.
Voorbeelden
In het volgende voorbeeld wordt een werkstroom aangeroepen die bestaat uit een LongRunningDiceRoll activiteit. De LongRunningDiceRoll activiteit heeft twee uitvoerargumenten die de resultaten van de dobbelsteendraaibewerking vertegenwoordigen. Deze worden opgehaald door aan te roepen EndInvoke. Wanneer de aanroep die moet EndInvoke worden geretourneerd, wordt elk uitvoerargument geretourneerd in de uitvoerwoordenlijst, gesleuteld op argumentnaam.
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.");
}
Opmerkingen
Als u een melding wilt ontvangen wanneer de werkstroom is voltooid en de uitvoerparameters van de werkstroom ophaalt, roept EndInvoke u de callback methode aan. Als EndInvoke de werkstroom wordt aangeroepen voordat de werkstroom is voltooid, wordt deze geblokkeerd totdat de werkstroom is voltooid. Als u een time-outinterval wilt configureren waarin de werkstroom moet worden voltooid, gebruikt u een van de BeginInvoke overbelastingen die een TimeSpan.
Met deze methode wordt een werkstroom asynchroon aangeroepen met behulp van het IAsyncResult asynchrone ontwerppatroon. Zie Overzicht van Asynchroon programmeren voor meer informatie.
Van toepassing op
BeginInvoke(TimeSpan, AsyncCallback, Object)
Roept een werkstroom asynchroon aan met behulp van het opgegeven time-outinterval AsyncCallbacken de door de gebruiker opgegeven status.
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
Parameters
- timeout
- TimeSpan
Het interval waarin de werkstroom moet worden voltooid voordat deze wordt afgebroken en er een TimeoutException wordt gegenereerd.
- callback
- AsyncCallback
De methode die moet worden aangeroepen wanneer de werkstroom is voltooid.
- state
- Object
Een optioneel toepassingsspecifiek object dat informatie bevat over de asynchrone bewerking.
Retouren
Een verwijzing naar de asynchrone aanroepbewerking.
Voorbeelden
In het volgende voorbeeld wordt een werkstroom aangeroepen die bestaat uit een LongRunningDiceRoll activiteit. De LongRunningDiceRoll activiteit heeft twee uitvoerargumenten die de resultaten van de dobbelsteendraaibewerking vertegenwoordigen. Deze worden opgehaald door aan te roepen EndInvoke. Wanneer de aanroep die moet EndInvoke worden geretourneerd, wordt elk uitvoerargument geretourneerd in de uitvoerwoordenlijst, gesleuteld op argumentnaam.
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.");
}
Opmerkingen
Als u een melding wilt ontvangen wanneer de werkstroom is voltooid en de uitvoerparameters van de werkstroom ophaalt, roept EndInvoke u de callback methode aan. Als EndInvoke de werkstroom wordt aangeroepen voordat de werkstroom is voltooid, wordt deze geblokkeerd totdat de werkstroom is voltooid. Als de werkstroom niet binnen het opgegeven time-outinterval wordt voltooid, wordt de werkstroom afgebroken en wordt er een TimeoutException gegenereerd wanneer de EndInvoke methode wordt aangeroepen.
Note
De TimeoutException wordt alleen gegooid als de tijdslimiet is verstreken en de werkstroom tijdens de uitvoering inactief wordt. Een workflow die langer duurt dan het opgegeven time-outinterval, wordt succesvol voltooid als de workflow niet inactief raakt.
Met deze methode wordt een werkstroom asynchroon aangeroepen met behulp van het IAsyncResult asynchrone ontwerppatroon. Zie Overzicht van Asynchroon programmeren voor meer informatie.
Van toepassing op
BeginInvoke(IDictionary<String,Object>, TimeSpan, AsyncCallback, Object)
Roept een werkstroom asynchroon aan met behulp van de opgegeven IDictionary<TKey,TValue> invoerparameters, time-outinterval AsyncCallbacken door de gebruiker opgegeven status.
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
Parameters
- inputs
- IDictionary<String,Object>
De woordenlijst met invoerparameters voor de werkstroom, met de sleutel op argumentnaam.
- timeout
- TimeSpan
Het interval waarin de werkstroom moet worden voltooid voordat deze wordt afgebroken en er een TimeoutException wordt gegenereerd.
- callback
- AsyncCallback
De methode die moet worden aangeroepen wanneer de werkstroom is voltooid.
- state
- Object
Een optioneel toepassingsspecifiek object dat informatie bevat over de asynchrone bewerking.
Retouren
Een verwijzing naar de asynchrone aanroepbewerking.
Voorbeelden
In het volgende voorbeeld wordt een werkstroom aangeroepen die bestaat uit een LongRunningDiceRoll activiteit. De LongRunningDiceRoll activiteit heeft twee uitvoerargumenten die de resultaten van de dobbelsteendraaibewerking vertegenwoordigen. Deze worden opgehaald door aan te roepen EndInvoke. Wanneer de aanroep die moet EndInvoke worden geretourneerd, wordt elk uitvoerargument geretourneerd in de uitvoerwoordenlijst, gesleuteld op argumentnaam.
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.");
}
Opmerkingen
Als u een melding wilt ontvangen wanneer de werkstroom is voltooid en de uitvoerparameters van de werkstroom ophaalt, roept EndInvoke u de callback methode aan. Als EndInvoke de werkstroom wordt aangeroepen voordat de werkstroom is voltooid, wordt deze geblokkeerd totdat de werkstroom is voltooid. Als de werkstroom niet binnen het opgegeven time-outinterval wordt voltooid, wordt de werkstroom afgebroken en wordt er een TimeoutException gegenereerd wanneer EndInvoke deze wordt aangeroepen.
Note
De TimeoutException wordt alleen gegooid als de tijdslimiet is verstreken en de werkstroom tijdens de uitvoering inactief wordt. Een workflow die langer duurt dan het opgegeven time-outinterval, wordt succesvol voltooid als de workflow niet inactief raakt.
Met deze methode wordt een werkstroom asynchroon aangeroepen met behulp van het IAsyncResult asynchrone ontwerppatroon. Zie Overzicht van Asynchroon programmeren voor meer informatie.