.NET 4 では、.NET 4.5 のSystem.Threading.Tasks.Task.WhenAll()に相当する機能はありますか?
目標は、複数の非同期タスクを 1 つのタスクにまとめ、それを構成するすべてのタスクが完了したときに完了することです。
.NET 4 では、.NET 4.5 のSystem.Threading.Tasks.Task.WhenAll()に相当する機能はありますか?
目標は、複数の非同期タスクを 1 つのタスクにまとめ、それを構成するすべてのタスクが完了したときに完了することです。
.NET Framework 4.0 では、Visual Studio 2010 の場合はAsyncCTPがインストールされている場合、Visual Studio 2012 の場合はAsync Targeting Packがインストールされている場合、WhenAll および WhenAny を使用できます。
WhenAll および WhenAny メソッドは、TaskEx 型で提供されます。
.Net 4.0 に組み込まれている最も近いものはContinueWhenAll()
. continuationAction
a を単純tasks => tasks
にして、返された を使用できますTask
。
パフォーマンス上の理由から、 と一緒に使用することをお勧めしますTaskContinuationOptions.ExecuteSynchronously
。
Task.WaitAll()
別のタスクで待機してみてください。LINQ 拡張メソッドToArray
を使用して から に変換IEnumerable<Task>
しTask[]
ます。
Task WhenAll(IEnumerable<Task> tasks)
{
return Task.Factory.StartNew(() => Task.WaitAll(tasks.ToArray()));
}