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

时间:2018-07-07 09:05:32

标签: 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返回响应将花费很多时间。

1 个答案:

答案 0 :(得分:0)

首先,请不要使用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);

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