在.NET 4,是否有任何功能上等同的.NET 4.5的System.Threading.Tasks.Task.WhenAll() ?
我们的目标是将多个异步任务包装成当其所有组成任务完成即完成了一个。
在.NET 4,是否有任何功能上等同的.NET 4.5的System.Threading.Tasks.Task.WhenAll() ?
我们的目标是将多个异步任务包装成当其所有组成任务完成即完成了一个。
我认为内置在.NET 4.0中最接近的是ContinueWhenAll()
你可以让continuationAction
一个简单的tasks => tasks
,并使用返回的Task
。
由于性能原因,你可能要与使用TaskContinuationOptions.ExecuteSynchronously
。
在.NET Framework 4.0中WhenAll和WhenAny能与安装使用AsyncCTP在Visual Studio 2010或的情况下, 异步靶向包在Visual Studio 2012的情况下。
该WhenAll和WhenAny方法,然后在TaskEx类型提供。
尝试等待Task.WaitAll()
的另一项任务。 使用LINQ扩展方法ToArray
转换从IEnumerable<Task>
到Task[]
Task WhenAll(IEnumerable<Task> tasks)
{
return Task.Factory.StartNew(() => Task.WaitAll(tasks.ToArray()));
}