我有如下獲取處方清單查詢: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