【发布时间】:2020-10-25 02:01:14
【问题描述】:
我需要使用 InsertData() 将数据插入到我的数据库中。正在使用其他服务获取数据。下面的代码一个接一个地执行。并行执行此操作的最佳方法是什么。
var taskslist = new List<Task>();
taskslist.Add(this.database.InsertData("data1", await this.service.GetData1()));
taskslist.Add(this.database.InsertData("data2", await this.service.GetData2()));
taskslist.Add(this.database.InsertData("data3", await this.service.GetData3()));
await Task.WhenAll(taskslist);
【问题讨论】:
-
InsertData是否返回Task? -
是的。 InsertData 返回 Task 和 GetData() 方法返回 Task
> -
您希望通过尝试并行执行多个插入得到什么?这只会增加竞争。
Task.WhenAll也不并行化任何东西,它等待已经执行的异步方法完成。 您的代码使用await this.service.GetData1()等强制串行执行
标签: parallel-processing async-await task