从Task.WhenAll执行中返回未取消的任务,可以通过以下步骤实现:
以下是一个示例代码:
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方法筛选出未取消的任务,并输出它们的结果。
请注意,这只是一个示例,你可以根据自己的需求进行修改和扩展。此外,腾讯云提供了一系列云计算产品,可以根据具体需求选择适合的产品进行开发和部署。
领取专属 10元无门槛券
手把手带您无忧上云