如何在多线程环境中添加或删除可观察集合中的元素
本文关键字:观察 集合 元素 删除 添加 多线程 环境 | 更新日期: 2023-09-27 18:30:50
我的.NET Framework 4.0 C# MVVM应用程序的ViewModel中有一个ObservableCollection的实例。此可观察集合的名称为工作区。 此集合是视图中 TabControl 的数据源(TabControl 的 ItemSource 属性绑定到该集合)。此集合与两个线程一起使用:线程"A"和线程"B"。线程"A"在集合中添加或删除元素,线程"B"通过foreach循环从集合中读取元素。
foreach (WorkspaceViewModel workspace in this.Workspaces)
{
. . . .
}
有时,当线程"A"在集合中添加元素时,InvalideOperationException已放置在foreach循环中的线程"B"中。此异常报告:"集合已修改;枚举操作可能无法执行"。如果我将foreach loop替换为for循环,它可以解决我的问题吗?
不,
它无助于切换到 for 循环。
使用并发可观察集合
下面是一个例子:
http://www.codeproject.com/Tips/274373/Concurrent-Observable-Collection
这是另一个:
http://www.codeproject.com/Articles/208361/Concurrent-Observable-Collection-Dictionary-and-So
您可以使用简单的谷歌搜索找到更多内容,并找到最适合您的内容。