我正在編寫的C#應用程序的一部分需要從服務提供者的數據庫爲與用戶關聯的每個帳戶收集數據。當用戶登錄到應用程序時,會進行調用以開始更新服務提供商數據庫中的帳戶。由於許多操作都是在第三方的最後執行的,因此獲取其信息的過程可能需要一段時間,所以我不想等待每個帳戶開始更新過程。我的問題是,是否有任何問題(可能是線程問題)在循環內調用異步方法?循環內的回調(異步方法調用)
0
A
回答
5
唯一的循環特定的問題是,如果您使用引用循環變量的匿名方法,則每次在循環周圍都會創建一個匿名方法對象的實例,但它們都將引用相同的循環變量,所以他們會看到它在循環執行時改變它的值。因此,在循環內創建一個循環變量的副本。
foreach (var thing in collection)
{
var copy = thing;
Action a =() =>
{
// refer to copy, not thing
}
}
2017-04-25:順便說一句,這個問題是由C#5.0解決的。 foreach
自動執行上述轉換。
1
循環沒有問題,但也可能會啓動(也)很多線程。看看你的要求是否允許使用the ThreadPool。
相關問題
- 1. Node.js For循環內部異步回調
- 2. 循環內的異步函數調用
- 3. 調用異步回調中的方法
- 4. React Native在循環內異步調用
- 5. 異步內部循環中調用
- 6. 異步調用內部循環
- 7. JavaScript異步調用循環
- 8. 循環中的異步回調
- 9. 與異步庫循環內的貓鼬異步調用
- 10. 處理與nodejs異步回調循環
- 11. 我們可以在循環中使用異步方法調用
- 12. 異步方法和內部循環
- 13. RxJava:循環中的異步調用
- 14. 循環中的JavaScript異步調用
- 15. Freebase:For循環中的異步調用
- 16. 異步方法調用同步方法
- 17. 在異步方法內調用Thread.sleep()
- 18. 用法與異步回調
- 19. 非異步循環內的異步方法
- 20. 異步調用異步方法
- 21. 如何從非異步方法異步調用異步方法
- 22. 帶有Task.ContinueWIth的異步方法回調?
- 23. 4種異步方法的回調C#
- 24. 回調中的異步方法
- 25. 在循環中調用異步任務?
- 26. Node.js Api調用異步循環
- 27. 異步mongodb調用for循環
- 28. 調用異步函數for循環
- 29. 循環中調用異步函數
- 30. 異步foreach循環進行API調用