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

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

在上面的示例中,我们分别将三个原始'Task'对象的执行结果存储在'result1'、'result2'和'result3'中,并在控制台输出这些结果。

.NET 6 Async Task 中多个 await 获取结果方法

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

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