WorkflowInvoker.BeginInvoke メソッド

定義

IAsyncResult 非同期デザイン パターンを使用して、1 つのワークフローを非同期的に呼び出します。

オーバーロード

BeginInvoke(AsyncCallback, Object)

指定された AsyncCallback およびユーザー指定状態を使用して、1 つのワークフローを非同期的に呼び出します。

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

入力パラメーターの指定された IDictionary<TKey,TValue>AsyncCallback、およびユーザー指定状態を使用して、1 つのワークフローを非同期的に呼び出します。

BeginInvoke(TimeSpan, AsyncCallback, Object)

指定されたタイムアウト時間、AsyncCallback、およびユーザー指定状態を使用して、1 つのワークフローを非同期的に呼び出します。

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

入力パラメーターの指定された IDictionary<TKey,TValue>、タイムアウト時間、AsyncCallback、およびユーザー指定状態を使用して、1 つのワークフローを非同期的に呼び出します。

注釈

詳細については、「 非同期プログラミングの概要」を参照してください。

BeginInvoke(AsyncCallback, Object)

指定された AsyncCallback およびユーザー指定状態を使用して、1 つのワークフローを非同期的に呼び出します。

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

パラメーター

callback
AsyncCallback

ワークフローが完了した時点で呼び出されるメソッド。

state
Object

非同期操作についての情報を格納するオプションのアプリケーション固有オブジェクト。

戻り値

非同期呼び出し操作への参照。

次の例は、LongRunningDiceRoll アクティビティで構成されるワークフローを呼び出します。 LongRunningDiceRoll アクティビティには、サイコロ振り操作の結果を表す 2 つの出力引数があります。 これらは EndInvoke を呼び出すことによって取得されます。 EndInvoke への呼び出しが返されると、引数名によってキー指定された各出力引数が出力ディレクトリに返されます。

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

注釈

ワークフローが完了したら通知を受け、ワークフローの出力パラメーターを取得できるようにするには、EndInvoke メソッドから callback を呼び出します。 EndInvoke は、呼び出されたときにワークフローが完了していなかった場合、ワークフローが完了するまでブロックします。 ワークフローを完了しなければならないタイムアウト時間を構成するには、BeginInvoke を受け取る TimeSpan オーバーロードのいずれかを使用します。

このメソッドは、IAsyncResult 非同期デザイン パターンを使用して、1 つのワークフローを非同期的に呼び出します。 詳細については、「 非同期プログラミングの概要」を参照してください。

適用対象

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

入力パラメーターの指定された IDictionary<TKey,TValue>AsyncCallback、およびユーザー指定状態を使用して、1 つのワークフローを非同期的に呼び出します。

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

パラメーター

inputs
IDictionary<String,Object>

ワークフローに渡す入力パラメーターのディクショナリであり、引数名によってキー指定されます。

callback
AsyncCallback

ワークフローが完了した時点で呼び出されるメソッド。

state
Object

非同期操作についての情報を格納するオプションのアプリケーション固有オブジェクト。

戻り値

非同期呼び出し操作への参照。

次の例は、LongRunningDiceRoll アクティビティで構成されるワークフローを呼び出します。 LongRunningDiceRoll アクティビティには、サイコロ振り操作の結果を表す 2 つの出力引数があります。 これらは EndInvoke を呼び出すことによって取得されます。 EndInvoke への呼び出しが返されると、引数名によってキー指定された各出力引数が出力ディレクトリに返されます。

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

注釈

ワークフローが完了したら通知を受け、ワークフローの出力パラメーターを取得できるようにするには、EndInvoke メソッドから callback を呼び出します。 EndInvoke は、呼び出されたときにワークフローが完了していなかった場合、ワークフローが完了するまでブロックします。 ワークフローを完了しなければならないタイムアウト時間を構成するには、BeginInvoke を受け取る TimeSpan オーバーロードのいずれかを使用します。

このメソッドは、IAsyncResult 非同期デザイン パターンを使用して、1 つのワークフローを非同期的に呼び出します。 詳細については、「 非同期プログラミングの概要」を参照してください。

適用対象

BeginInvoke(TimeSpan, AsyncCallback, Object)

指定されたタイムアウト時間、AsyncCallback、およびユーザー指定状態を使用して、1 つのワークフローを非同期的に呼び出します。

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

パラメーター

timeout
TimeSpan

ワークフローが完了する必要がある期間。これを超えると、中止されて TimeoutException がスローされます。

callback
AsyncCallback

ワークフローが完了した時点で呼び出されるメソッド。

state
Object

非同期操作についての情報を格納するオプションのアプリケーション固有オブジェクト。

戻り値

非同期呼び出し操作への参照。

次の例は、LongRunningDiceRoll アクティビティで構成されるワークフローを呼び出します。 LongRunningDiceRoll アクティビティには、サイコロ振り操作の結果を表す 2 つの出力引数があります。 これらは EndInvoke を呼び出すことによって取得されます。 EndInvoke への呼び出しが返されると、引数名によってキー指定された各出力引数が出力ディレクトリに返されます。

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

注釈

ワークフローが完了したら通知を受け、ワークフローの出力パラメーターを取得できるようにするには、EndInvoke メソッドから callback を呼び出します。 EndInvoke は、呼び出されたときにワークフローが完了していなかった場合、ワークフローが完了するまでブロックします。 指定されたタイムアウト期間内にワークフローが完了しない場合は中止されます。そして、TimeoutException メソッドが呼び出されると、EndInvoke がスローされます。

注意

TimeoutException がスローされるのは、タイムアウト期間が経過してワークフローが実行中にアイドル状態になった場合だけです。 指定されたタイムアウト時間内には完了しないワークフローが正常に完了するのは、アイドル状態にならない場合です。

このメソッドは、IAsyncResult 非同期デザイン パターンを使用して、1 つのワークフローを非同期的に呼び出します。 詳細については、「 非同期プログラミングの概要」を参照してください。

適用対象

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

入力パラメーターの指定された IDictionary<TKey,TValue>、タイムアウト時間、AsyncCallback、およびユーザー指定状態を使用して、1 つのワークフローを非同期的に呼び出します。

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

パラメーター

inputs
IDictionary<String,Object>

ワークフローに渡す入力パラメーターのディクショナリであり、引数名によってキー指定されます。

timeout
TimeSpan

ワークフローが完了する必要がある期間。これを超えると、中止されて TimeoutException がスローされます。

callback
AsyncCallback

ワークフローが完了した時点で呼び出されるメソッド。

state
Object

非同期操作についての情報を格納するオプションのアプリケーション固有オブジェクト。

戻り値

非同期呼び出し操作への参照。

次の例は、LongRunningDiceRoll アクティビティで構成されるワークフローを呼び出します。 LongRunningDiceRoll アクティビティには、サイコロ振り操作の結果を表す 2 つの出力引数があります。 これらは EndInvoke を呼び出すことによって取得されます。 EndInvoke への呼び出しが返されると、引数名によってキー指定された各出力引数が出力ディレクトリに返されます。

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

注釈

ワークフローが完了したら通知を受け、ワークフローの出力パラメーターを取得できるようにするには、EndInvoke メソッドから callback を呼び出します。 EndInvoke は、呼び出されたときにワークフローが完了していなかった場合、ワークフローが完了するまでブロックします。 指定されたタイムアウト期間内にワークフローが完了しない場合は中止されます。そして、TimeoutException が呼び出されると、EndInvoke がスローされます。

注意

TimeoutException がスローされるのは、タイムアウト期間が経過してワークフローが実行中にアイドル状態になった場合だけです。 指定されたタイムアウト時間内には完了しないワークフローが正常に完了するのは、アイドル状態にならない場合です。

このメソッドは、IAsyncResult 非同期デザイン パターンを使用して、1 つのワークフローを非同期的に呼び出します。 詳細については、「 非同期プログラミングの概要」を参照してください。

適用対象