WorkflowInvoker.BeginInvoke Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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.