【发布时间】:2011-05-07 21:23:48
【问题描述】:
我的一个项目中有一个ObservableCollection<T>,我需要使访问线程安全。
特别是,我需要一个线程安全的枚举器。这意味着,在迭代集合期间(例如,在 LINQ 查询期间),没有人应该能够添加项目。
我注意到 .NET 4.0 命名空间 System.Collections.Concurrent 中的类。然而,它们似乎都不匹配。另外,在MSDN doc 中,我没有找到关于哪些访问实际上是 线程安全的段落。
某处是否存在我可以使用的现有线程安全集合,或者我必须自己实现它?
【问题讨论】:
-
在迭代集合期间(例如,在 LINQ 查询期间),应该没有人能够添加项目。 如果有人尝试将项目添加到迭代时收集?它应该抛出异常吗?堵塞?成功但没有出现在迭代中?
-
@马克,谢谢你的想法。我希望它阻止更新。
-
试试下面的链接,它提供了一个线程安全的解决方案,可以在任何线程上工作,并且可以通过多个 UI 线程绑定到:codeproject.com/Articles/64936/…
标签: c# collections concurrency thread-safety observablecollection