Freigeben über


WorkflowInvoker.BeginInvoke Methode

Definition

Ruft einen Workflow mithilfe des asynchronen IAsyncResult-Entwurfsmusters asynchron auf.

Überlädt

BeginInvoke(AsyncCallback, Object)

Ruft einen Workflow mithilfe des angegebenen AsyncCallback und des vom Benutzer bereitgestellten Status asynchron auf.

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

Ruft einen Workflow mithilfe des angegebenen IDictionary<TKey,TValue> von Eingabeparametern, AsyncCallback und des vom Benutzer bereitgestellten Status asynchron auf.

BeginInvoke(TimeSpan, AsyncCallback, Object)

Ruft einen Workflow mithilfe des angegebenen Timeoutintervalls, AsyncCallback und des vom Benutzer bereitgestellten Status asynchron auf.

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

Ruft einen Workflow mithilfe des angegebenen IDictionary<TKey,TValue> von Eingabeparametern, des Timeoutintervalls, AsyncCallback und des vom Benutzer bereitgestellten Status asynchron auf.

Hinweise

Weitere Informationen finden Sie unter Übersicht über die asynchrone Programmierung.

BeginInvoke(AsyncCallback, Object)

Ruft einen Workflow mithilfe des angegebenen AsyncCallback und des vom Benutzer bereitgestellten Status asynchron auf.

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

Parameter

callback
AsyncCallback

Die Methode, die aufgerufen werden muss, wenn der Workflow abgeschlossen wurde.

state
Object

Ein optionales, anwendungsspezifisches Objekt, das Informationen über die asynchrone Operation enthält.

Gibt zurück

Ein Verweis auf den asynchronen Aufrufvorgang.

Beispiele

Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer LongRunningDiceRoll-Aktivität besteht. Die LongRunningDiceRoll-Aktivität verfügt über zwei Ausgabeargumente, die die Ergebnisse des Würfelvorgangs darstellen. Diese werden abgerufen, indem EndInvoke aufgerufen wird. Wenn der Aufruf von EndInvoke zurückgegeben wird, werden die einzelnen Ausgabeargumente nach Argumentname sortiert im Ausgabewörterbuch zurückgegeben.

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

Hinweise

Um benachrichtigt zu werden, wenn der Workflow abgeschlossen ist, und um die Ausgabeparameter des Workflows abzurufen, rufen Sie EndInvoke der callback-Methode auf. Wenn EndInvoke aufgerufen wird, bevor der Workflow abgeschlossen ist, erfolgt eine Sperre bis zum Abschluss des Workflows. Um ein anderes Timeoutintervall für den Abschluss des Workflows zu konfigurieren, verwenden Sie eine der BeginInvoke-Überladungen, die einen TimeSpan annehmen.

Diese Methode ruft einen Workflow mithilfe des asynchronen IAsyncResult-Entwurfsmusters asynchron auf. Weitere Informationen finden Sie unter Übersicht über die asynchrone Programmierung.

Gilt für:

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

Ruft einen Workflow mithilfe des angegebenen IDictionary<TKey,TValue> von Eingabeparametern, AsyncCallback und des vom Benutzer bereitgestellten Status asynchron auf.

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

Parameter

inputs
IDictionary<String,Object>

Das Wörterbuch von Eingabeparametern für den Workflow, nach Argumentname geordnet.

callback
AsyncCallback

Die Methode, die aufgerufen werden muss, wenn der Workflow abgeschlossen wurde.

state
Object

Ein optionales, anwendungsspezifisches Objekt, das Informationen über die asynchrone Operation enthält.

Gibt zurück

Ein Verweis auf den asynchronen Aufrufvorgang.

Beispiele

Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer LongRunningDiceRoll-Aktivität besteht. Die LongRunningDiceRoll-Aktivität verfügt über zwei Ausgabeargumente, die die Ergebnisse des Würfelvorgangs darstellen. Diese werden abgerufen, indem EndInvoke aufgerufen wird. Wenn der Aufruf von EndInvoke zurückgegeben wird, werden die einzelnen Ausgabeargumente nach Argumentname sortiert im Ausgabewörterbuch zurückgegeben.

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

Hinweise

Um benachrichtigt zu werden, wenn der Workflow abgeschlossen ist, und um die Ausgabeparameter des Workflows abzurufen, rufen Sie EndInvoke der callback-Methode auf. Wenn EndInvoke aufgerufen wird, bevor der Workflow abgeschlossen ist, erfolgt eine Sperre bis zum Abschluss des Workflows. Um ein anderes Timeoutintervall für den Abschluss des Workflows zu konfigurieren, verwenden Sie eine der BeginInvoke-Überladungen, die einen TimeSpan annehmen.

Diese Methode ruft einen Workflow mithilfe des asynchronen IAsyncResult-Entwurfsmusters asynchron auf. Weitere Informationen finden Sie unter Übersicht über die asynchrone Programmierung.

Gilt für:

BeginInvoke(TimeSpan, AsyncCallback, Object)

Ruft einen Workflow mithilfe des angegebenen Timeoutintervalls, AsyncCallback und des vom Benutzer bereitgestellten Status asynchron auf.

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

Parameter

timeout
TimeSpan

Das Intervall, in dem der Workflow abgeschlossen werden muss, bevor er abgebrochen und eine TimeoutException ausgelöst wird.

callback
AsyncCallback

Die Methode, die aufgerufen werden muss, wenn der Workflow abgeschlossen wurde.

state
Object

Ein optionales, anwendungsspezifisches Objekt, das Informationen über die asynchrone Operation enthält.

Gibt zurück

Ein Verweis auf den asynchronen Aufrufvorgang.

Beispiele

Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer LongRunningDiceRoll-Aktivität besteht. Die LongRunningDiceRoll-Aktivität verfügt über zwei Ausgabeargumente, die die Ergebnisse des Würfelvorgangs darstellen. Diese werden abgerufen, indem EndInvoke aufgerufen wird. Wenn der Aufruf von EndInvoke zurückgegeben wird, werden die einzelnen Ausgabeargumente nach Argumentname sortiert im Ausgabewörterbuch zurückgegeben.

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

Hinweise

Um benachrichtigt zu werden, wenn der Workflow abgeschlossen ist, und um die Ausgabeparameter des Workflows abzurufen, rufen Sie EndInvoke der callback-Methode auf. Wenn EndInvoke aufgerufen wird, bevor der Workflow abgeschlossen ist, erfolgt eine Sperre bis zum Abschluss des Workflows. Falls der Workflow innerhalb des angegebenen Timeoutintervalls nicht abgeschlossen wird, wird der Workflow abgebrochen, und eine TimeoutException wird ausgelöst, wenn die EndInvoke-Methode aufgerufen wird.

Hinweis

Das TimeoutException-Objekt wird nur ausgelöst, wenn das Timeoutintervall verstreicht und der Workflow während der Ausführung in den Leerlauf wechselt. Ein Workflow, der erst nach dem angegebenen Timeoutintervall abgeschlossen wird, wird dennoch erfolgreich beendet, wenn der Workflow nicht in den Leerlauf wechselt.

Diese Methode ruft einen Workflow mithilfe des asynchronen IAsyncResult-Entwurfsmusters asynchron auf. Weitere Informationen finden Sie unter Übersicht über die asynchrone Programmierung.

Gilt für:

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

Ruft einen Workflow mithilfe des angegebenen IDictionary<TKey,TValue> von Eingabeparametern, des Timeoutintervalls, AsyncCallback und des vom Benutzer bereitgestellten Status asynchron auf.

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

Parameter

inputs
IDictionary<String,Object>

Das Wörterbuch von Eingabeparametern für den Workflow, nach Argumentname geordnet.

timeout
TimeSpan

Das Intervall, in dem der Workflow abgeschlossen werden muss, bevor er abgebrochen und eine TimeoutException ausgelöst wird.

callback
AsyncCallback

Die Methode, die aufgerufen werden muss, wenn der Workflow abgeschlossen wurde.

state
Object

Ein optionales, anwendungsspezifisches Objekt, das Informationen über die asynchrone Operation enthält.

Gibt zurück

Ein Verweis auf den asynchronen Aufrufvorgang.

Beispiele

Im folgenden Beispiel wird ein Workflow aufgerufen, der aus einer LongRunningDiceRoll-Aktivität besteht. Die LongRunningDiceRoll-Aktivität verfügt über zwei Ausgabeargumente, die die Ergebnisse des Würfelvorgangs darstellen. Diese werden abgerufen, indem EndInvoke aufgerufen wird. Wenn der Aufruf von EndInvoke zurückgegeben wird, werden die einzelnen Ausgabeargumente nach Argumentname sortiert im Ausgabewörterbuch zurückgegeben.

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

Hinweise

Um benachrichtigt zu werden, wenn der Workflow abgeschlossen ist, und um die Ausgabeparameter des Workflows abzurufen, rufen Sie EndInvoke der callback-Methode auf. Wenn EndInvoke aufgerufen wird, bevor der Workflow abgeschlossen ist, erfolgt eine Sperre bis zum Abschluss des Workflows. Falls der Workflow innerhalb des angegebenen Timeoutintervalls nicht abgeschlossen wird, wird der Workflow abgebrochen, und eine TimeoutException wird ausgelöst, wenn EndInvoke aufgerufen wird.

Hinweis

Das TimeoutException-Objekt wird nur ausgelöst, wenn das Timeoutintervall verstreicht und der Workflow während der Ausführung in den Leerlauf wechselt. Ein Workflow, der erst nach dem angegebenen Timeoutintervall abgeschlossen wird, wird dennoch erfolgreich beendet, wenn der Workflow nicht in den Leerlauf wechselt.

Diese Methode ruft einen Workflow mithilfe des asynchronen IAsyncResult-Entwurfsmusters asynchron auf. Weitere Informationen finden Sie unter Übersicht über die asynchrone Programmierung.

Gilt für: