【发布时间】:2016-08-15 09:22:38
【问题描述】:
在等待调用后,我遇到了 foreach 循环的问题。 purchaseOrders 填充了 4 个订单,但 foreach 每次在达到 4 个迭代之前都会停止。执行停止,并且不会运行GetInvoices 调用。
GetPurchaseOrders("50000");
GetInvoices("10000");
static async void GetPurchaseOrders(string supplier)
{
var purchaseOrders = await VNA.PurchaseOrders.ForSupplierAsyncTask(supplier);
foreach (var order in purchaseOrders)
{
CreateXMLDocument(order, order.orderNbr, "PurchaseOrder");
}
}
【问题讨论】:
-
追踪告诉你什么?
-
CreateXMLDocument 是无效的吗?或者也许是一个异步方法?
-
听起来像是在某个地方出现了死锁,您是否尝试添加
ConfigureAwait? -
您应该避免编写
async void方法的众多原因之一 - 没有自然的地方可以捕获未处理的异常。 -
如果你在 foreach 行中断,根据调试器,purchaseOrders 的内容是什么?有四个命令吗? ForSupplierAsyncTask 的返回值是多少?它是一个 IEnumerable 可能会使用延迟执行吗?您确定 ForSupplierAsyncTask 使用 ToList() 或 ToArray() 或类似方法来强制执行 IEnumerable 或 IQueryable?
标签: c# .net async-await