我有一个方法,它在完成之前返回(为简洁起见,已缩减下列代码):
Processor.IOBoundTaskAsync 方法返回一个 Task<SomeResponseObject>,而不是 void。
发生了什么?
我希望 lambda foreach 每次只处理一个项目,而不是并行处理。对于第一次迭代,代码进入 IOBoundTaskAsync 并走到第一个 "await" (它调用了 4 个等待的 web 服务方法中的第一个) ,然后调用方法 "ProcessAllItems" 就退出了。
我只使用测试数据,所以我的列表中只有一个项目。
我错过了什么?
private void ProcessAllItems(List<Item> items)
{
items.ForEach(async item =>
{
var response = await Processor.IOBoundTaskAsync(item);
// Some further processing on the response object.
});
}
Processor.IOBoundTaskAsync 方法返回一个 Task<SomeResponseObject>,而不是 void。
发生了什么?
我希望 lambda foreach 每次只处理一个项目,而不是并行处理。对于第一次迭代,代码进入 IOBoundTaskAsync 并走到第一个 "await" (它调用了 4 个等待的 web 服务方法中的第一个) ,然后调用方法 "ProcessAllItems" 就退出了。
我只使用测试数据,所以我的列表中只有一个项目。
我错过了什么?