.NET 4当量Task.WhenAll的()(.NET 4 equivalent of Task.

2019-07-30 10:57发布

在.NET 4,是否有任何功能上等同的.NET 4.5的System.Threading.Tasks.Task.WhenAll() ?

我们的目标是将多个异步任务包装成当其所有组成任务完成即完成了一个。

Answer 1:

我认为内置在.NET 4.0中最接近的是ContinueWhenAll() 你可以让continuationAction一个简单的tasks => tasks ,并使用返回的Task

由于性能原因,你可能要与使用TaskContinuationOptions.ExecuteSynchronously



Answer 2:

在.NET Framework 4.0中WhenAll和WhenAny能与安装使用AsyncCTP在Visual Studio 2010或的情况下, 异步靶向包在Visual Studio 2012的情况下。

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



Answer 3:

尝试等待Task.WaitAll()的另一项任务。 使用LINQ扩展方法ToArray转换从IEnumerable<Task>Task[]

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


文章来源: .NET 4 equivalent of Task.WhenAll()