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/