有什麼辦法在windows phone 7應用程序中使用不異步的服務器方法? 我有一個數據列表。在foreach循環中,爲每個數據發送一個請求給服務器,但是它們沒有按照我的調用順序完成。我怎樣才能做到這一點?在Windows Phone 7中調用異步方法
0
A
回答
2
我有一個數據列表。在foreach循環中,爲每個數據發送一個請求到服務器,但是它們沒有按照我的調用順序完成。我怎樣才能做到這一點?
那麼你可以有效地使他們同步 - 擺脫它作爲一個實際 foreach循環的,而是建立適當的異步回調,這樣當第一反應進來,你發送的第二個請求等等,直到沒有更多的請求。 (您可能希望使用Queue<T>
來排隊發送請求。)
0
不要因爲某些東西似乎不起作用而返回同步方式。在異步世界中工作有很多好處。還有一些危險。關鍵是知道如何避免這些危險。 這是一個使用WebClient的例子,它會產生有害的影響。
foreach (var item in items)
{
WebClient client = new WebClient();
client.DownloadStringCompleted += (sender, args) =>
{
item.Stuff = args.Result;
};
client.OpenReadAsync(new Uri("http://mydomain.com/stuff"));
}
當返回客戶端,也不能保證item
是「創造」的客戶端請求相同的項目。這被稱爲「訪問修改更近」。這僅僅意味着你可能試圖修改不存在的東西,或者不一樣。 這個正確的方法是捕捉到的foreach內您的項目像這樣:
foreach (var item in items)
{
var internalItem = item;
WebClient client = new WebClient();
client.DownloadStringCompleted += (sender, args) =>
{
internalItem.Stuff = args.Result;
};
client.OpenReadAsync(new Uri("http://mydomain.com/stuff"));
}
這可確保您使用的是正確的項目,因爲它已經在foreach的範圍內拍攝。
相關問題
- 1. Windows Phone 7異步方法多個調用
- 2. 在windows phone 7應用程序中完成和異步方法
- 3. 異步WCF調用不在Windows Phone 7中觸發
- 4. 在Windows Phone 8中使用WCF服務:異步方法?
- 5. 如何在Windows Phone 7中調用webservice方法?
- 6. 在同步方法中調用異步
- 7. 異步調用異步方法
- 8. 如何在Windows Phone 7中調用webservice?
- 9. 如何從非異步方法異步調用異步方法
- 10. 異步方法調用同步方法
- 11. Windows Phone 8使異步方法的行爲像它的同步
- 12. Windows Phone定期任務同步異步方法
- 13. Windows Phone 7,silverlight - 如何在調用異步Web服務時捕獲EndpointNotFoundException?
- 14. 無法從Windows Phone 7模擬器調用WCF服務方法
- 15. 在windows phone 7中
- 16. 在MVVM silverlight中調用異步方法
- 17. 在C中異步調用方法#
- 18. 在catch塊中調用異步方法
- 19. 在同步方法中調用異步web api方法throws error
- 20. 從windows phone中的異步方法獲取結果
- 21. 如何測試Windows Phone中的異步方法
- 22. 調用異步回調中的方法
- 23. WCF調用異步方法
- 24. 調用WCF方法異步
- 25. 異步任務的Windows Phone
- 26. 調用方法aspx異步
- 27. 異步方法調用PHP
- 28. 異步方法調用
- 29. 在Windows Phone 7 XML-RPC調用
- 30. 異步調用webservice方法