WorkflowInvoker.BeginInvoke メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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 つのワークフローを非同期的に呼び出します。 詳細については、「 非同期プログラミングの概要」を参照してください。
適用対象
.NET