可以使用Task.WhenAll方法将多个Task对象组合成一个新的Task对象,并在所有Task对象都完成时返回。然后可以使用await关键字等待这个新的Task对象,以获取前面await的执行结果。

以下是一个示例代码:

async Task Main()
{
    Task<int> task1 = Task.Delay(1000).ContinueWith(_ => 1);
    Task<int> task2 = Task.Delay(2000).ContinueWith(_ => 2);
    Task<int> task3 = Task.Delay(3000).ContinueWith(_ => 3);

    await Task.WhenAll(task1, task2, task3);

    int result1 = await task1;
    int result2 = await task2;
    int result3 = await task3;

    Console.WriteLine($"Result 1: {result1}");
    Console.WriteLine($"Result 2: {result2}");
    Console.WriteLine($"Result 3: {result3}");
}

在上面的示例中,我们创建了三个Task<int>对象,分别表示三个异步操作,并使用Task.Delay模拟它们的执行。然后,我们使用Task.WhenAll方法将这三个Task对象组合成一个新的Task对象,并在所有Task对象都完成时返回。最后,我们可以使用await关键字等待这个新的Task对象,并使用await再次获取每个原始Task对象的执行结果。

请注意,Task.WhenAll方法返回的Task对象的结果是一个Task<int[]>,它包含了每个原始Task<int>对象的结果。因此,我们可以使用await关键字等待这个Task<int[]>对象,并使用await再次获取每个原始Task<int>对象的执行结果。

在上面的示例中,我们分别将三个原始Task<int>对象的执行结果存储在result1result2result3中,并在控制台输出这些结果

net6 async Task 里面有多个await 。最后一个await想获取前面await的执行结果。如何编写?

原文地址: http://www.cveoy.top/t/topic/iHbz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录