バックグラウンドでタスクのリストを実行する Web サービス関数があります。すべてのタスクが完了すると、戻ります。C# 5 の関数を再検討しました。次のスニペットを機能させることができました。
var result = new List<int>();
var tasks = new List<Task<int>>();
foreach (var row in rowlist)
tasks.Add(Task.Factory.StartNew(() => DoWork(row)));
foreach (var task in tasks)
result.Add(task.Result);
個々のタスクが完了するのtask.Result
を待ちます。メソッドに 3 秒の遅延を追加し、DoWork
10 個のタスクのリストに対して 5 秒未満で終了することを確認することで、これをテストしました。
async / await
ここで、新しい構文を使用して関数を書き直そうとしました。しかし、私はそれを機能させることができないようです。コンパイルされた場合、待機を追加することによって検証されるように、同期的に実行されます。
を使用して上記のスニペットを書き直す方法についてのアイデアはありますasync / await
か?