Chr*_*ris 0 c# multithreading asynchronous
我正在编写的C#应用程序的一部分需要从服务提供商的数据库中为与用户关联的每个帐户收集数据.当用户登录应用程序时,将进行调用以开始从服务提供商的数据库更新帐户.由于在第三方结束时执行批量操作,获取其信息的过程可能需要一段时间,因此我不想等待每个帐户只是为了开始更新过程.我的问题是,在循环中调用异步方法是否有任何问题(可能是线程问题)?
唯一特定于循环的问题是如果你使用引用循环变量的匿名方法,每次循环时都会创建一个匿名方法对象的实例,但它们都会引用相同的循环变量,所以他们会看到它在循环执行时更改其值.所以在循环中复制循环变量.
foreach (var thing in collection)
{
var copy = thing;
Action a = () =>
{
// refer to copy, not thing
}
}
Run Code Online (Sandbox Code Playgroud)
2017-04-25:顺便说一下,这个问题是由C#5.0解决的.foreach
自动执行上述转换.
归档时间: |
|
查看次数: |
1972 次 |
最近记录: |