WorkflowInvoker.BeginInvoke Metod

Definition

Anropar ett arbetsflöde asynkront med hjälp av det IAsyncResult asynkrona designmönstret.

Överlagringar

Name Description
BeginInvoke(AsyncCallback, Object)

Anropar ett arbetsflöde asynkront med det angivna AsyncCallback tillståndet och användartillståndet.

BeginInvoke(IDictionary<String,Object>, AsyncCallback, Object)

Anropar ett arbetsflöde asynkront med angivna IDictionary<TKey,TValue> indataparametrar, AsyncCallbackoch användartillstånd.

BeginInvoke(TimeSpan, AsyncCallback, Object)

Anropar ett arbetsflöde asynkront med det angivna tidsgränsintervallet, AsyncCallbackoch användartillståndet.

BeginInvoke(IDictionary<String,Object>, TimeSpan, AsyncCallback, Object)

Anropar ett arbetsflöde asynkront med angivna IDictionary<TKey,TValue> indataparametrar, tidsgränsintervall AsyncCallbackoch användartillstånd.

Kommentarer

Mer information finns i Asynkron programmeringsöversikt.

BeginInvoke(AsyncCallback, Object)

Anropar ett arbetsflöde asynkront med det angivna AsyncCallback tillståndet och användartillståndet.

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

Parametrar

callback
AsyncCallback

Den metod som ska anropas när arbetsflödet har slutförts.

state
Object

Ett valfritt programspecifikt objekt som innehåller information om den asynkrona åtgärden.

Returer

En referens till den asynkrona anropande åtgärden.

Exempel

I följande exempel anropas ett arbetsflöde som består av en LongRunningDiceRoll aktivitet. Aktiviteten LongRunningDiceRoll har två utdataargument som representerar resultatet av tärningskaståtgärden. Dessa hämtas genom att anropa EndInvoke. När anropet till EndInvoke returneras returneras varje utdataargument i utdataordlistan, med argumentets namn.

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.");
}

Kommentarer

Om du vill få ett meddelande när arbetsflödet är klart och hämta utdataparametrarna för arbetsflödet anropar EndInvoke du callback från -metoden. Om EndInvoke anropas innan arbetsflödet har slutförts blockeras det tills arbetsflödet har slutförts. Om du vill konfigurera ett tidsgränsintervall där arbetsflödet måste slutföras använder du en av de BeginInvoke överlagringar som tar en TimeSpan.

Den här metoden anropar ett arbetsflöde asynkront med hjälp av det IAsyncResult asynkrona designmönstret. Mer information finns i Asynkron programmeringsöversikt.

Gäller för

BeginInvoke(IDictionary<String,Object>, AsyncCallback, Object)

Anropar ett arbetsflöde asynkront med angivna IDictionary<TKey,TValue> indataparametrar, AsyncCallbackoch användartillstånd.

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

Parametrar

inputs
IDictionary<String,Object>

Ordlistan med indataparametrar till arbetsflödet, med namnet på argumentet.

callback
AsyncCallback

Den metod som ska anropas när arbetsflödet har slutförts.

state
Object

Ett valfritt programspecifikt objekt som innehåller information om den asynkrona åtgärden.

Returer

En referens till den asynkrona anropande åtgärden.

Exempel

I följande exempel anropas ett arbetsflöde som består av en LongRunningDiceRoll aktivitet. Aktiviteten LongRunningDiceRoll har två utdataargument som representerar resultatet av tärningskaståtgärden. Dessa hämtas genom att anropa EndInvoke. När anropet till EndInvoke returneras returneras varje utdataargument i utdataordlistan, med argumentets namn.

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.");
}

Kommentarer

Om du vill få ett meddelande när arbetsflödet är klart och hämta utdataparametrarna för arbetsflödet anropar EndInvoke du callback från -metoden. Om EndInvoke anropas innan arbetsflödet har slutförts blockeras det tills arbetsflödet har slutförts. Om du vill konfigurera ett tidsgränsintervall där arbetsflödet måste slutföras använder du en av de BeginInvoke överlagringar som tar en TimeSpan.

Den här metoden anropar ett arbetsflöde asynkront med hjälp av det IAsyncResult asynkrona designmönstret. Mer information finns i Asynkron programmeringsöversikt.

Gäller för

BeginInvoke(TimeSpan, AsyncCallback, Object)

Anropar ett arbetsflöde asynkront med det angivna tidsgränsintervallet, AsyncCallbackoch användartillståndet.

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

Parametrar

timeout
TimeSpan

Intervallet då arbetsflödet måste slutföras innan det avbryts och ett TimeoutException genereras.

callback
AsyncCallback

Den metod som ska anropas när arbetsflödet har slutförts.

state
Object

Ett valfritt programspecifikt objekt som innehåller information om den asynkrona åtgärden.

Returer

En referens till den asynkrona anropande åtgärden.

Exempel

I följande exempel anropas ett arbetsflöde som består av en LongRunningDiceRoll aktivitet. Aktiviteten LongRunningDiceRoll har två utdataargument som representerar resultatet av tärningskaståtgärden. Dessa hämtas genom att anropa EndInvoke. När anropet till EndInvoke returneras returneras varje utdataargument i utdataordlistan, med argumentets namn.

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.");
}

Kommentarer

Om du vill få ett meddelande när arbetsflödet är klart och hämta utdataparametrarna för arbetsflödet anropar EndInvoke du callback från -metoden. Om EndInvoke anropas innan arbetsflödet har slutförts blockeras det tills arbetsflödet har slutförts. Om arbetsflödet inte slutförs inom det angivna tidsgränsintervallet avbryts arbetsflödet och ett TimeoutException genereras när EndInvoke metoden anropas.

Note

TimeoutException genereras endast om tidsgränsintervallet löper ut och arbetsflödet är inaktivt under körning. Ett arbetsflöde som tar längre tid än det angivna tidsgränsintervallet för att slutföras slutförs om arbetsflödet inte blir inaktivt.

Den här metoden anropar ett arbetsflöde asynkront med hjälp av det IAsyncResult asynkrona designmönstret. Mer information finns i Asynkron programmeringsöversikt.

Gäller för

BeginInvoke(IDictionary<String,Object>, TimeSpan, AsyncCallback, Object)

Anropar ett arbetsflöde asynkront med angivna IDictionary<TKey,TValue> indataparametrar, tidsgränsintervall AsyncCallbackoch användartillstånd.

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

Parametrar

inputs
IDictionary<String,Object>

Ordlistan med indataparametrar till arbetsflödet, med namnet på argumentet.

timeout
TimeSpan

Intervallet då arbetsflödet måste slutföras innan det avbryts och ett TimeoutException genereras.

callback
AsyncCallback

Den metod som ska anropas när arbetsflödet har slutförts.

state
Object

Ett valfritt programspecifikt objekt som innehåller information om den asynkrona åtgärden.

Returer

En referens till den asynkrona anropande åtgärden.

Exempel

I följande exempel anropas ett arbetsflöde som består av en LongRunningDiceRoll aktivitet. Aktiviteten LongRunningDiceRoll har två utdataargument som representerar resultatet av tärningskaståtgärden. Dessa hämtas genom att anropa EndInvoke. När anropet till EndInvoke returneras returneras varje utdataargument i utdataordlistan, med argumentets namn.

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.");
}

Kommentarer

Om du vill få ett meddelande när arbetsflödet är klart och hämta utdataparametrarna för arbetsflödet anropar EndInvoke du callback från -metoden. Om EndInvoke anropas innan arbetsflödet har slutförts blockeras det tills arbetsflödet har slutförts. Om arbetsflödet inte slutförs inom det angivna tidsgränsintervallet avbryts arbetsflödet och ett TimeoutException genereras när EndInvoke anropas.

Note

TimeoutException genereras endast om tidsgränsintervallet löper ut och arbetsflödet är inaktivt under körning. Ett arbetsflöde som tar längre tid än det angivna tidsgränsintervallet för att slutföras slutförs om arbetsflödet inte blir inaktivt.

Den här metoden anropar ett arbetsflöde asynkront med hjälp av det IAsyncResult asynkrona designmönstret. Mer information finns i Asynkron programmeringsöversikt.

Gäller för