【发布时间】:2014-08-19 18:38:27
【问题描述】:
我刚开始使用 .net mvc 5 async await 。我在运行时确定要并行运行的任务很少。它们都有不同的返回类型,我想使用 Task.WhenAll 来等待它们。就像question 讨论的那样,但我没有要运行的预定义任务集。我需要在运行时创建具有不同返回类型的任务集合 然后等待。
【问题讨论】:
标签: c# .net asynchronous task-parallel-library async-await
我刚开始使用 .net mvc 5 async await 。我在运行时确定要并行运行的任务很少。它们都有不同的返回类型,我想使用 Task.WhenAll 来等待它们。就像question 讨论的那样,但我没有要运行的预定义任务集。我需要在运行时创建具有不同返回类型的任务集合 然后等待。
【问题讨论】:
标签: c# .net asynchronous task-parallel-library async-await
您可以只创建一个List<Task>,然后使用Task.WhenAll:
var tasks = new List<Task>();
var task1 = Func1Async();
tasks.Add(task1);
var task2 = Func2Async();
tasks.Add(task2);
...
await Task.WhenAll(tasks);
请注意,由于返回类型不同,您必须单独提取结果:
var result1 = await task1;
var result2 = await task2;
【讨论】:
dynamic,比如:var results = tasks.Select((dynamic x) => x.Result);
await Task.WhenAll 行将抛出异常。