c# - 我有 3 个任务,我希望它们同时开始并并行运行

标签 c# task

Task taskpro = new Task (delegate{codeblock});
Task taskbeds = new Task (delegate{codeblock});
Task taskpax = new Task (delegate{codeblock});

List<Task> TaskList = new List<Task>(); 
TaskList.Add(taskBeds);
TaskList.Add(taskPro);
TaskList.Add(taskPax);

Task.WaitAll(TaskList.ToArray());

在每个代码块中,我向不同的 API 发送请求。问题是,如果我单独发送请求并且我想尽量减少等待时间,API 会花费很多时间来返回响应。

最佳答案

首先,不要使用new Task。使用从异步方法返回的 Task,或者如果只有同步方法可用,请使用 Task.Run

之后,使用 Task.WhenAll 等待它们全部异步完成。

var tasks = new List<Task<T>>();
tasks.Add(() => DoSomethingAsync());
tasks.Add(() => DoSomethingElseAsync());
var results = await Task.WhenAll(tasks);

这是并发,不是并行。这意味着它们可以同时运行。

关于c# - 我有 3 个任务,我希望它们同时开始并并行运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51221594/

相关文章:

c# - 如何同步运行异步枚举器方法并将其存储为 IEnumerable?

c# - 模拟异步方法

c# - 在 C# 中计算二进制文件符号的频率不起作用但适用于等效的 C++ 代码

c# - 使用 C# 在位图上锐化

c# - 使用构造函数参数 Ninject Get<T>

c# - 从异步方法将字符串添加到 StringBuilder

c++ - 共享内存线程和 MPI 之间的主要区别?

c# - 将方法放入任务中以避免阻塞 asp.net 线程

c# - 日期时间如何

c# - Asp.net 头部问题