【发布时间】:2016-02-15 00:19:54
【问题描述】:
我正在努力思考如何在 foreach 循环中处理多个 async/await 调用。我有大约 20,000 行由 foreach 循环处理的数据。我的代码大致是:
foreach (var item in data)
{
if (ConditionA(item))
{
if (ConditionAB(item));
{
await CreateThingViaAPICall(item)
}
else
{
var result = await GetExistingRecord(item);
var result2 = await GetOtherExistingRecord(result);
var result3 = await GetOtherExistingRecord(result2);
//Do processing
...
await CreateThingViaAPICall();
}
}
... and so on
}
我看到很多帖子说在循环中使用异步的最佳方法是构建任务列表,然后使用 Task.WhenAll。在我的情况下,作为每次迭代的一部分,我有相互依赖的任务。在这种情况下,如何建立要执行的任务列表?
【问题讨论】:
-
你有什么问题?
-
如果我没记错的话,在 foreach 中使用 async/wait 的推荐方法是先构建一个任务列表,然后调用 Task.WhenAll。我的问题是循环的每次迭代都有多个任务相互依赖。在这种情况下,如何构建要等待的任务列表?
-
我误解了你的问题吗?迭代中的每一项是否都依赖于上一项的成功完成?
-
迭代中的每个项目确实相互依赖。你的回答真的很有帮助,我可以选择两者作为答案。
-
啊,好吧,那我确实做了一个错误的假设。我不是打算刷已接受的答案,但我很高兴它有帮助:)
标签: c# asynchronous foreach async-await