在 .NET 4 中,是否有与 .NET 4.5 的System.Threading.Tasks.Task.WhenAll()等效的功能?
目标是将多个异步任务打包成一个,当其所有组成任务完成时完成。
在 .NET 4 中,是否有与 .NET 4.5 的System.Threading.Tasks.Task.WhenAll()等效的功能?
目标是将多个异步任务打包成一个,当其所有组成任务完成时完成。
在 .NET Framework 4.0中,在 Visual Studio 2010 的情况下,WhenAll 和 WhenAny 可以与已安装的AsyncCTP一起使用,在 Visual Studio 2012 的情况下,可以与Async Targeting Pack一起使用。
然后在 TaskEx 类型上提供 WhenAll 和 WhenAny 方法。
我认为 .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()));
}