次のようなコードがあります。
var myTask = requiredTask.ContinueWith(_=>
{
var otherTasks = from item in otherObjects select item.DoSomethingAsync();
Task.WaitAll(otherTasks);
// do my real work
});
私の理解では、WaitAll の呼び出しは、(IO バウンド) サブタスクが完了する間、スレッド プール内のスレッドをブロックして保持します。私の質問は:
スレッドプールのスレッドを結び付けることについての私の仮定は正しいですか?
もしそうなら、これを避けるための最良の方法は何ですか?
これは .NET4/Windows XP をサポートする必要があるライブラリ用であるため、使用await
はオプションではないことに注意してください。