.NET 4相当于Task.WhenAll()

在.NET 4中,是否有任何function等同于.NET 4.5的System.Threading.Tasks.Task.WhenAll() ?

目标是将多个异步任务包装成一个在完成所有组成任务时完成的任务。

我认为.Net 4.0中内置的最接近的东西是ContinueWhenAll() 。 您可以使continuationAction成为一个简单的tasks => tasks并使用返回的Task

出于性能原因,您可能希望将它与TaskContinuationOptions.ExecuteSynchronously一起使用。

在.NET Framework 4.0中,对于Visual Studio 2010或Visual Studio 2012中的Async Targeting Pack ,WhenAll和WhenAny可以与已安装的AsyncCTP一起使用。

然后在TaskEx类型上提供WhenAll和WhenAny方法。

尝试在另一个任务中等待Task.WaitAll() 。 使用LINQ扩展方法ToArrayIEnumerable转换为Task[]

 Task WhenAll(IEnumerable tasks) { return Task.Factory.StartNew(() => Task.WaitAll(tasks.ToArray())); }