在.NET 4中,是否有与.NET 4.5的System.Threading.Tasks.Task.WhenAll()相对应的功能?
目标是将多个异步任务包装成一个单一的任务,在其所有组成部分任务完成时完成。
目标是将多个异步任务包装成一个单一的任务,在其所有组成部分任务完成时完成。
在.NET Framework 4.0中,当使用Visual Studio 2010时,可以与已安装的AsyncCTP一起使用WhenAll和WhenAny,或者在使用Visual Studio 2012时,可以与Async Targeting Pack一起使用。
然后,在TaskEx类型上提供了WhenAll和WhenAny方法。
我认为.Net 4.0 内置的功能中,与之最接近的是 ContinueWhenAll()
。您可以将continuationAction
设置为简单的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()));
}
Parallel.Invoke
不是针对Task
进行操作,而是针对Action
进行操作。 - Monroe Thomas