C# Asp.NETMVC5。异步等待。具有不同返回类型的等待任务

C# Asp.NETMVC5。异步等待。具有不同返回类型的等待任务,c#,.net,asynchronous,task-parallel-library,async-await,C#,.net,Asynchronous,Task Parallel Library,Async Await,我刚开始使用.NETMVC5AsyncAwait。我在运行时决定并行运行的任务很少。它们都有不同的返回类型,我想使用Task.whall来等待它们。像这样讨论,但我没有预定义的任务集来运行。我需要在运行时创建具有不同返回类型的任务集合 然后等待。您可以创建一个列表,然后使用任务。当所有: var tasks = new List<Task>(); var task1 = Func1Async(); tasks.Add(task1); var task2 = Func2Async();

我刚开始使用.NETMVC5AsyncAwait。我在运行时决定并行运行的任务很少。它们都有不同的返回类型,我想使用Task.whall来等待它们。像这样讨论,但我没有预定义的任务集来运行。我需要在运行时创建具有不同返回类型的任务集合
然后等待。

您可以创建一个
列表,然后使用
任务。当所有
:

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;”可能是这样的,但在c#中@user1803361:那么您只需使用
dynamic
,例如:
var results=tasks.Select((dynamic x)=>x.Result)谢谢@Stephen Cleary。在这种情况下,您能告诉我们如何处理异常(一个或多个任务失败)吗。再次感谢:)等待任务。如果一个或多个任务失败,所有
行将抛出异常。
var result1 = await task1;
var result2 = await task2;