Sdílet prostřednictvím


WorkflowInvoker.BeginInvoke Metoda

Definice

Vyvolá pracovní postup asynchronně pomocí vzoru asynchronního návrhu IAsyncResult .

Přetížení

BeginInvoke(AsyncCallback, Object)

Vyvolá pracovní postup asynchronně pomocí zadaného AsyncCallback a uživatelem zadaného stavu.

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

Vyvolá pracovní postup asynchronně pomocí zadaných IDictionary<TKey,TValue> vstupních parametrů AsyncCallbacka stavu zadaného uživatelem.

BeginInvoke(TimeSpan, AsyncCallback, Object)

Vyvolá pracovní postup asynchronně pomocí zadaného intervalu časového limitu AsyncCallbacka stavu zadaného uživatelem.

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

Vyvolá pracovní postup asynchronně pomocí zadaných IDictionary<TKey,TValue> vstupních parametrů, intervalu časového limitu AsyncCallbacka stavu zadaného uživatelem.

Poznámky

Další informace najdete v tématu Přehled asynchronního programování.

BeginInvoke(AsyncCallback, Object)

Vyvolá pracovní postup asynchronně pomocí zadaného AsyncCallback a uživatelem zadaného stavu.

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

Parametry

callback
AsyncCallback

Metoda, která se má volat po dokončení pracovního postupu.

state
Object

Volitelný objekt specifický pro aplikaci, který obsahuje informace o asynchronní operaci.

Návraty

Odkaz na asynchronní operaci vyvolání.

Příklady

Následující příklad vyvolá pracovní postup, který se skládá z LongRunningDiceRoll aktivity. Aktivita LongRunningDiceRoll má dva výstupní argumenty, které představují výsledky operace hodu kostkou. Načtou se voláním EndInvoke. Při volání se EndInvoke vrátí každý výstupní argument ve slovníku outputs s klíčem podle názvu argumentu.

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

Poznámky

Chcete-li být upozorněni na dokončení pracovního postupu a načíst výstupní parametry pracovního postupu, zavolejte EndInvoke z callback metody. Pokud EndInvoke je volána před dokončením pracovního postupu, blokuje se, dokud se pracovní postup neskončí. Pokud chcete nakonfigurovat interval časového limitu, ve kterém se musí pracovní postup dokončit, použijte jedno z BeginInvoke přetížení, které zabírají TimeSpan.

Tato metoda vyvolá pracovní postup asynchronně pomocí vzoru asynchronního návrhu IAsyncResult . Další informace najdete v tématu Přehled asynchronního programování.

Platí pro

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

Vyvolá pracovní postup asynchronně pomocí zadaných IDictionary<TKey,TValue> vstupních parametrů AsyncCallbacka stavu zadaného uživatelem.

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

Parametry

inputs
IDictionary<String,Object>

Slovník vstupních parametrů pracovního postupu s klíčem podle názvu argumentu.

callback
AsyncCallback

Metoda, která se má volat po dokončení pracovního postupu.

state
Object

Volitelný objekt specifický pro aplikaci, který obsahuje informace o asynchronní operaci.

Návraty

Odkaz na asynchronní operaci vyvolání.

Příklady

Následující příklad vyvolá pracovní postup, který se skládá z LongRunningDiceRoll aktivity. Aktivita LongRunningDiceRoll má dva výstupní argumenty, které představují výsledky operace hodu kostkou. Načtou se voláním EndInvoke. Při volání se EndInvoke vrátí každý výstupní argument ve slovníku outputs s klíčem podle názvu argumentu.

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

Poznámky

Chcete-li být upozorněni na dokončení pracovního postupu a načíst výstupní parametry pracovního postupu, zavolejte EndInvoke z callback metody. Pokud EndInvoke je volána před dokončením pracovního postupu, blokuje se, dokud se pracovní postup neskončí. Pokud chcete nakonfigurovat interval časového limitu, ve kterém se musí pracovní postup dokončit, použijte jedno z BeginInvoke přetížení, které zabírají TimeSpan.

Tato metoda vyvolá pracovní postup asynchronně pomocí vzoru asynchronního návrhu IAsyncResult . Další informace najdete v tématu Přehled asynchronního programování.

Platí pro

BeginInvoke(TimeSpan, AsyncCallback, Object)

Vyvolá pracovní postup asynchronně pomocí zadaného intervalu časového limitu AsyncCallbacka stavu zadaného uživatelem.

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

Parametry

timeout
TimeSpan

Interval, ve kterém se pracovní postup musí dokončit, než bude přerušen a TimeoutException vyvolán.

callback
AsyncCallback

Metoda, která se má volat po dokončení pracovního postupu.

state
Object

Volitelný objekt specifický pro aplikaci, který obsahuje informace o asynchronní operaci.

Návraty

Odkaz na asynchronní operaci vyvolání.

Příklady

Následující příklad vyvolá pracovní postup, který se skládá z LongRunningDiceRoll aktivity. Aktivita LongRunningDiceRoll má dva výstupní argumenty, které představují výsledky operace hodu kostkou. Načtou se voláním EndInvoke. Při volání se EndInvoke vrátí každý výstupní argument ve slovníku outputs s klíčem podle názvu argumentu.

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

Poznámky

Chcete-li být upozorněni na dokončení pracovního postupu a načíst výstupní parametry pracovního postupu, zavolejte EndInvoke z callback metody. Pokud EndInvoke je volána před dokončením pracovního postupu, blokuje se, dokud se pracovní postup neskončí. Pokud se pracovní postup nedokončí v zadaném intervalu časového limitu, pracovní postup se přeruší a TimeoutException vyvolá se při EndInvoke zavolání metody.

Poznámka

Vyvolá TimeoutException se pouze v případě, že uběhl časový limit a pracovní postup se během provádění stane nečinný. Pracovní postup, který trvá déle, než je zadaný časový limit, se úspěšně dokončí, pokud pracovní postup nebude nečinný.

Tato metoda vyvolá pracovní postup asynchronně pomocí vzoru asynchronního návrhu IAsyncResult . Další informace najdete v tématu Přehled asynchronního programování.

Platí pro

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

Vyvolá pracovní postup asynchronně pomocí zadaných IDictionary<TKey,TValue> vstupních parametrů, intervalu časového limitu AsyncCallbacka stavu zadaného uživatelem.

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

Parametry

inputs
IDictionary<String,Object>

Slovník vstupních parametrů pracovního postupu s klíčem podle názvu argumentu.

timeout
TimeSpan

Interval, ve kterém se pracovní postup musí dokončit, než bude přerušen a TimeoutException vyvolán.

callback
AsyncCallback

Metoda, která se má volat po dokončení pracovního postupu.

state
Object

Volitelný objekt specifický pro aplikaci, který obsahuje informace o asynchronní operaci.

Návraty

Odkaz na asynchronní operaci vyvolání.

Příklady

Následující příklad vyvolá pracovní postup, který se skládá z LongRunningDiceRoll aktivity. Aktivita LongRunningDiceRoll má dva výstupní argumenty, které představují výsledky operace hodu kostkou. Načtou se voláním EndInvoke. Při volání se EndInvoke vrátí každý výstupní argument ve slovníku outputs s klíčem podle názvu argumentu.

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

Poznámky

Chcete-li být upozorněni na dokončení pracovního postupu a načíst výstupní parametry pracovního postupu, zavolejte EndInvoke z callback metody. Pokud EndInvoke je volána před dokončením pracovního postupu, blokuje se, dokud se pracovní postup neskončí. Pokud se pracovní postup nedokončí v zadaném intervalu časového limitu, pracovní postup se přeruší a TimeoutException vyvolá se při EndInvoke jeho zavolání.

Poznámka

Vyvolá TimeoutException se pouze v případě, že uběhl časový limit a pracovní postup se během provádění stane nečinný. Pracovní postup, který trvá déle, než je zadaný časový limit, se úspěšně dokončí, pokud pracovní postup nebude nečinný.

Tato metoda vyvolá pracovní postup asynchronně pomocí vzoru asynchronního návrhu IAsyncResult . Další informace najdete v tématu Přehled asynchronního programování.

Platí pro