WorkflowInvoker invoker = new WorkflowInvoker(new Workflow1());
for (int i = 0; i < 10; i++)
{
//invoker.InvokeAsync(myOrders);
IAsyncResult result = invoker.BeginInvoke(myOrders,new AsyncCallback(WorkflowCompletedCallback),order);
}
上記のコードを使用して、非同期ワークフローを実装します。このワークフローを10回実行したいと思っています。スレッドプールに似たものがあるので、10個のワークフロースレッドを同時に実行できます。2番目は最初のものがその仕事を終えるのを待つ必要はありません。私のワークフローは非常に単純で、計算を行い、画面にいくつかの文を印刷します。上記のコードを実行した後、同時に実行したいと思っていたものではなく、10個のワークフローが1つずつ呼び出されているようです。ワークフローを非同期化する正しい方法は何ですか?ありがとうございました!
更新:他の人からのフィードバックの後、workflowapplicationを使用してこれを非同期的に実行しようとします。
WorkflowApplication wfApp = new WorkflowApplication(new Workflow1(), myOrders);
for (int i = 0; i < 10; i++)
{
wfApp.Run();
}
/* Read the end time. */
DateTime stopTime = DateTime.Now;
Console.WriteLine(stopTime);
// Duration
TimeSpan duration = stopTime - startTime;
Console.WriteLine("hours:" + duration.TotalHours);
Console.WriteLine("minutes:" + duration.TotalMinutes);
Console.WriteLine("seconds:" + duration.TotalSeconds);
Console.WriteLine("milliseconds:" + duration.TotalMilliseconds);
実行結果は次のとおりです。4/8/20119:57:49AM 4/8/2011 9:57:50 AM時間:6.27777777777778E-05分:0.00376666666666667秒:0.226ミリ秒:226プロセス注文顧客:10 | 配送:翌日| 合計金額:250 | 送料:10ProductID:1 | 数量:5 | 価格:50 ProductID:2 | 数量:10 | 価格:200
同期されていないようですが、実際にワークフローを実行しているのは1つのスレッドだけです(メインのアプリケーションスレッドではありません)。しかし、出力から、ワークフローを実行しているスレッドは1つだけであることがわかります。10個のスレッドに同時にワークフローを実行させるにはどうすればよいですか?ありがとうございました!