Nyelv

WorkflowInvoker.BeginInvoke Metódus

Definíció

Egy munkafolyamatot aszinkron módon hív meg az aszinkron IAsyncResult tervezési mintával.

Túlterhelések

Name Description
BeginInvoke(AsyncCallback, Object)

A megadott és a felhasználó által megadott állapot használatával aszinkron módon hívja meg a AsyncCallback munkafolyamatot.

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

A munkafolyamatot aszinkron módon hívja meg a megadott IDictionary<TKey,TValue> bemeneti paraméterek AsyncCallbackés felhasználó által megadott állapot használatával.

BeginInvoke(TimeSpan, AsyncCallback, Object)

A munkafolyamatot aszinkron módon hívja meg a megadott időtúllépési időköz és AsyncCallbacka felhasználó által megadott állapot használatával.

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

A munkafolyamatot aszinkron módon hívja meg a megadott IDictionary<TKey,TValue> bemeneti paraméterek, időtúllépési időköz AsyncCallbackés felhasználó által megadott állapot használatával.

Megjegyzések

További információ: Aszinkron programozás áttekintése.

BeginInvoke(AsyncCallback, Object)

A megadott és a felhasználó által megadott állapot használatával aszinkron módon hívja meg a AsyncCallback munkafolyamatot.

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

Paraméterek

callback
AsyncCallback

A munkafolyamat befejezésekor meghívandó metódus.

state
Object

Nem kötelező alkalmazásspecifikus objektum, amely az aszinkron művelettel kapcsolatos információkat tartalmazza.

Válaszok

Hivatkozás az aszinkron meghívási műveletre.

Példák

Az alábbi példa egy tevékenységből álló munkafolyamatot LongRunningDiceRoll hív meg. A LongRunningDiceRoll tevékenységnek két kimeneti argumentuma van, amelyek a kockatekercselési művelet eredményeit jelölik. Ezeket a rendszer hívással EndInvokekéri le. A visszahíváskor EndInvoke a kimeneti argumentumok a kimenetek szótárában lesznek visszaadva, argumentumnév alapján.

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

Megjegyzések

Ha értesítést szeretne kapni a munkafolyamat befejezéséről, és le szeretné kérni a munkafolyamat kimeneti paramétereit, hívja meg EndInvoke a callback metódust. Ha EndInvoke a munkafolyamat befejeződése előtt meghívják, a folyamat addig blokkolódik, amíg a munkafolyamat be nem fejeződik. Ha olyan időtúllépési időközt szeretne konfigurálni, amelyben a munkafolyamatnak végre kell hajtania, használja az BeginInvoke egyik túlterhelést TimeSpan, amely egy .

Ez a metódus aszinkron módon hívja meg a munkafolyamatot az aszinkron IAsyncResult tervezési mintával. További információ: Aszinkron programozás áttekintése.

A következőre érvényes:

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

A munkafolyamatot aszinkron módon hívja meg a megadott IDictionary<TKey,TValue> bemeneti paraméterek AsyncCallbackés felhasználó által megadott állapot használatával.

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

Paraméterek

inputs
IDictionary<String,Object>

A munkafolyamat bemeneti paramétereinek szótára, argumentumnévvel megadva.

callback
AsyncCallback

A munkafolyamat befejezésekor meghívandó metódus.

state
Object

Nem kötelező alkalmazásspecifikus objektum, amely az aszinkron művelettel kapcsolatos információkat tartalmazza.

Válaszok

Hivatkozás az aszinkron meghívási műveletre.

Példák

Az alábbi példa egy tevékenységből álló munkafolyamatot LongRunningDiceRoll hív meg. A LongRunningDiceRoll tevékenységnek két kimeneti argumentuma van, amelyek a kockatekercselési művelet eredményeit jelölik. Ezeket a rendszer hívással EndInvokekéri le. A visszahíváskor EndInvoke a kimeneti argumentumok a kimenetek szótárában lesznek visszaadva, argumentumnév alapján.

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

Megjegyzések

Ha értesítést szeretne kapni a munkafolyamat befejezéséről, és le szeretné kérni a munkafolyamat kimeneti paramétereit, hívja meg EndInvoke a callback metódust. Ha EndInvoke a munkafolyamat befejeződése előtt meghívják, a folyamat addig blokkolódik, amíg a munkafolyamat be nem fejeződik. Ha olyan időtúllépési időközt szeretne konfigurálni, amelyben a munkafolyamatnak végre kell hajtania, használja az BeginInvoke egyik túlterhelést TimeSpan, amely egy .

Ez a metódus aszinkron módon hívja meg a munkafolyamatot az aszinkron IAsyncResult tervezési mintával. További információ: Aszinkron programozás áttekintése.

A következőre érvényes:

BeginInvoke(TimeSpan, AsyncCallback, Object)

A munkafolyamatot aszinkron módon hívja meg a megadott időtúllépési időköz és AsyncCallbacka felhasználó által megadott állapot használatával.

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

Paraméterek

timeout
TimeSpan

Az az intervallum, amelyben a munkafolyamatnak le kell fejeződnie, mielőtt megszakítanák, és TimeoutException a folyamat le lesz vetve.

callback
AsyncCallback

A munkafolyamat befejezésekor meghívandó metódus.

state
Object

Nem kötelező alkalmazásspecifikus objektum, amely az aszinkron művelettel kapcsolatos információkat tartalmazza.

Válaszok

Hivatkozás az aszinkron meghívási műveletre.

Példák

Az alábbi példa egy tevékenységből álló munkafolyamatot LongRunningDiceRoll hív meg. A LongRunningDiceRoll tevékenységnek két kimeneti argumentuma van, amelyek a kockatekercselési művelet eredményeit jelölik. Ezeket a rendszer hívással EndInvokekéri le. A visszahíváskor EndInvoke a kimeneti argumentumok a kimenetek szótárában lesznek visszaadva, argumentumnév alapján.

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

Megjegyzések

Ha értesítést szeretne kapni a munkafolyamat befejezéséről, és le szeretné kérni a munkafolyamat kimeneti paramétereit, hívja meg EndInvoke a callback metódust. Ha EndInvoke a munkafolyamat befejeződése előtt meghívják, a folyamat addig blokkolódik, amíg a munkafolyamat be nem fejeződik. Ha a munkafolyamat nem fejeződik be a megadott időtúllépési intervallumon belül, a munkafolyamat megszakad, és TimeoutException a EndInvoke metódus meghívásakor a folyamat megszakad.

Note

A TimeoutException csak akkor vet ki hibát, ha az időkorlát letelik, és a munkafolyamat végrehajtás közben tétlenné válik. A megadott időtúllépési időköznél hosszabb ideig tartó munkafolyamat sikeresen befejeződik, ha a munkafolyamat nem válik tétlenné.

Ez a metódus aszinkron módon hívja meg a munkafolyamatot az aszinkron IAsyncResult tervezési mintával. További információ: Aszinkron programozás áttekintése.

A következőre érvényes:

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

A munkafolyamatot aszinkron módon hívja meg a megadott IDictionary<TKey,TValue> bemeneti paraméterek, időtúllépési időköz AsyncCallbackés felhasználó által megadott állapot használatával.

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

Paraméterek

inputs
IDictionary<String,Object>

A munkafolyamat bemeneti paramétereinek szótára, argumentumnévvel megadva.

timeout
TimeSpan

Az az intervallum, amelyben a munkafolyamatnak le kell fejeződnie, mielőtt megszakítanák, és TimeoutException a folyamat le lesz vetve.

callback
AsyncCallback

A munkafolyamat befejezésekor meghívandó metódus.

state
Object

Nem kötelező alkalmazásspecifikus objektum, amely az aszinkron művelettel kapcsolatos információkat tartalmazza.

Válaszok

Hivatkozás az aszinkron meghívási műveletre.

Példák

Az alábbi példa egy tevékenységből álló munkafolyamatot LongRunningDiceRoll hív meg. A LongRunningDiceRoll tevékenységnek két kimeneti argumentuma van, amelyek a kockatekercselési művelet eredményeit jelölik. Ezeket a rendszer hívással EndInvokekéri le. A visszahíváskor EndInvoke a kimeneti argumentumok a kimenetek szótárában lesznek visszaadva, argumentumnév alapján.

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

Megjegyzések

Ha értesítést szeretne kapni a munkafolyamat befejezéséről, és le szeretné kérni a munkafolyamat kimeneti paramétereit, hívja meg EndInvoke a callback metódust. Ha EndInvoke a munkafolyamat befejeződése előtt meghívják, a folyamat addig blokkolódik, amíg a munkafolyamat be nem fejeződik. Ha a munkafolyamat nem fejeződik be a megadott időtúllépési időközön belül, a munkafolyamat megszakad, és TimeoutException meghívásakor a folyamat eldobódik EndInvoke .

Note

A TimeoutException csak akkor vet ki hibát, ha az időkorlát letelik, és a munkafolyamat végrehajtás közben tétlenné válik. A megadott időtúllépési időköznél hosszabb ideig tartó munkafolyamat sikeresen befejeződik, ha a munkafolyamat nem válik tétlenné.

Ez a metódus aszinkron módon hívja meg a munkafolyamatot az aszinkron IAsyncResult tervezési mintával. További információ: Aszinkron programozás áttekintése.

A következőre érvényes: