首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从Task.WhenAll执行中返回未取消的任务

从Task.WhenAll执行中返回未取消的任务,可以通过以下步骤实现:

  1. 首先,确保你有一个包含所有需要执行的任务的任务列表。这些任务可以是异步方法、任务或任务工厂方法返回的任务。
  2. 使用Task.WhenAll方法来等待所有任务完成。该方法接受一个任务数组作为参数,并返回一个新的任务,该任务在所有输入任务完成时完成。
  3. 在Task.WhenAll方法返回的任务上使用await关键字,以等待所有任务完成。
  4. 在等待任务完成后,可以使用Task.WhenAll方法返回的任务的Result属性来获取一个包含所有未取消任务的任务数组。

以下是一个示例代码:

代码语言:txt
复制
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

public class Program
{
    public static async Task Main()
    {
        // 创建任务列表
        var tasks = new List<Task<int>>();
        tasks.Add(DoWorkAsync(1, 1000));
        tasks.Add(DoWorkAsync(2, 2000));
        tasks.Add(DoWorkAsync(3, 3000));

        // 等待所有任务完成
        await Task.WhenAll(tasks);

        // 获取未取消的任务
        var completedTasks = tasks.FindAll(t => !t.IsCanceled);

        // 输出未取消任务的结果
        foreach (var task in completedTasks)
        {
            Console.WriteLine($"Task {task.Id} completed with result: {task.Result}");
        }
    }

    public static async Task<int> DoWorkAsync(int taskId, int delay)
    {
        Console.WriteLine($"Task {taskId} started");
        await Task.Delay(delay);
        Console.WriteLine($"Task {taskId} completed");
        return taskId;
    }
}

在上面的示例中,我们创建了三个异步任务,并将它们添加到任务列表中。然后,我们使用Task.WhenAll方法等待所有任务完成。在等待完成后,我们使用FindAll方法筛选出未取消的任务,并输出它们的结果。

请注意,这只是一个示例,你可以根据自己的需求进行修改和扩展。此外,腾讯云提供了一系列云计算产品,可以根据具体需求选择适合的产品进行开发和部署。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券