我有如下获取处方清单查询:Silverlight的异步操作的foreach循环
var PRSCRPTSQuery = GV.dbContext.Load(GV.dbContext.GetPRSCRPTQuery(GV.curCustomer.CustCode,
oOrdritemEdited.ProdCode, oOrdritemEdited.MedCode));
PRSCRPTSQuery.Completed += new EventHandler(PRSCRPTSQuery_Completed);
在查询完成的事件,我有以下代码:
void PRSCRPTSQuery_Completed(object sender, EventArgs e)
{
lstPRSCRPT = GV.dbContext.PRSCRPTs.Where(p=>p.Status =="Activated").ToList();
if (lstPRSCRPT.Count > 0)
{
foreach (var rec in lstPRSCRPT)
{
var OrderItemQuery = GV.dbContext.Load(GV.dbContext.GetOrdritemsQuery(rec.PresNo));
OrderItemQuery.Completed += new EventHandler(OrderItemQuery_Completed);
}
}
}
名单lstPRSCRPT可以包含多条记录。我相信,foreach循环将提前在循环的下一个项目,而不必等待OrderItemQuery_Completed事件,低于:
void OrderItemQuery_Completed(object sender, EventArgs e)
{
lstOrderItem = GV.dbContext.OrderItems.ToList();
if (lstOrderItem.Count > 0)
{
foreach (var OrdrItemRec in lstOrderItem)
{
TotTonnes = (double)(TotTonnes + OrdrItemRec.Quantity);
}
}
}
是否有任何变通解决办法这种情况呢?我是新来的异步编程类型在SL
您在寻找什么解决方法?至于为什么目前遇到问题呢?你是正确的,因为for循环将不会等待,并会循环发送尽可能多的请求(假设你省略了执行代码行) – Chris
我的担心是如何知道我什么时候可以执行某些代码在所有回电完成后。 – sony