2013-01-25 41 views
1

我是Windows Phone開發新手。停止循環直到在wp7中獲得服務結果

我正在使用for循環爲列表中的每個元素調用webservice。我只想在獲得服務結果後才能進入下一個循環。我的循環是這樣的:

for (int i = 0; i < count; i++) 
     { 
      selectedInfo = lstReorderItems[i]; 
      if (string.IsNullOrEmpty(selectedInfo.ItemCostVariantValueIDs)) 
      { 
       client.AddItemstoCartCompleted += client_AddItemstoCartCompleted; 
       client.AddItemstoCartAsync(//params); 
      } 
      else 
      { 
       client.CheckItemQuantityInCartCompleted += client_CheckItemQuantityInCartCompleted; 
       client.CheckItemQuantityInCartAsync(//params); 
      } 
     } 

但循環繼續而不等待結果來。所以任何人都可以幫助我?

回答

0

經過這個問題後,我瞭解的是,您正在製作系列網絡服務電話。在我看來這是不好,,因爲得到最終結果用戶不得不等待,直到所有的服務調用完成,並有中途得到失敗響應,這也將阻止最終結果。因此,請進行並行調用,以支持WebClient使用後臺選項進行設計。

如果它是完全必要的,那麼聲明循環變量作爲類成員

Public class xxxxxx 
{ 
    int i = (startCount) 0; 

然後啓動該服務像往常一樣,

selectedInfo = lstReorderItems[i]; 
if (string.IsNullOrEmpty(selectedInfo.ItemCostVariantValueIDs)) 
    { 
     client.AddItemstoCartCompleted += client_AddItemstoCartCompleted; 
     client.AddItemstoCartAsync(//params); 
    } 

在服務響應完成的事件,你的情況client_AddItemstoCartCompleted在遞增循環變量之後調用相同的服務,然後必須比較循環變量與計數 ,因爲

if(i< count) 
{ 
i++; 
selectedInfo = lstReorderItems[i]; 
if (string.IsNullOrEmpty(selectedInfo.ItemCostVariantValueIDs)) 
    { 
     client.AddItemstoCartAsync(//params); 
    } 
}