WorkflowInvoker.BeginInvoke Methode

Definitie

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.

Van toepassing op