我正在编写的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. 调用异步回调中的方法
- 2. React Native在循环内异步调用
- 3. JavaScript异步调用循环
- 4. 循环中的异步回调
- 5. 处理与nodejs异步回调循环
- 6. 异步方法和内部循环
- 7. RxJava:循环中的异步调用
- 8. 循环中的JavaScript异步调用
- 9. 异步方法调用同步方法
- 10. 在异步方法内调用Thread.sleep()
- 11. 用法与异步回调
- 12. 如何从非异步方法异步调用异步方法
- 13. 4种异步方法的回调C#
- 14. 回调中的异步方法
- 15. 循环中调用异步函数
- 16. 调用异步函数for循环
- 17. 异步mongodb调用for循环
- 18. Node.js Api调用异步循环
- 19. 调用WCF方法异步
- 20. 异步调用方法
- 21. 异步调用webservice方法
- 22. 异步方法调用PHP
- 23. C#异步方法调用
- 24. 从ASP.NET调用异步方法调用
- 25. 异步调用与回调
- 26. 同步异步调用的方法?
- 27. 每个()循环内的Ajax调用不是异步的
- 28. 循环异步调用并加入返回的承诺
- 29. 如何从Meteor自己的回调中调用异步方法?
- 30. 的Ajax调用异步函数结束前,内循环功能