タスク並列ライブラリを使用して一連のアイテムの関数呼び出しをスケジュールしようとしています。タスク並列ライブラリの使用に関するヘルプ
次は
List<Task> tasks = new List<Task>();
foreach(var someValue in aCollection)
{
var t = Task.Factory.StartNew(() => DoSomeWork(someValue));
tasks.Add(t);
}
Task.WaitAll(tasks.ToArray());
を動作しません。しかし、以下では、それは一度実行してから停止する最初のアプローチのために
Task.WaitAll(aCollection.Select(a => Task.Factory.StartNew(() => DoSomeWork(a))).ToArray());
に動作します。私は参照または何かを上書きするかどうかはわかりません。誰かがplsすることができますか?説明する?
タスクに最初にスケジュールされたタスクを識別するために使用できるシーケンス番号をタスクに渡す方法もあります。私はすべてのタスクが完了するのを待っていますが、コレクション内のシーケンスに基づいて結果を並べ替えることを望みます。
http://stackoverflow.com/questions/2956328/foreach-failing-when-using-parallel-task-library/3155693#3155693 –
@Jim:ありがとうございます。シーケンスのことについてのアイデアは? – stackoverflowuser