我的.NET Framework 4.0 C#MVVM应用程序的ViewModel中有一个ObservableCollection实例。此ObservableCollection的名称是Workspaces。此集合是View中TabControl的数据源(TabControl的ItemSource属性绑定到集合)。该集合使用两个线程:线程“A”和线程“B”。线程“A”在集合中添加或删除元素,线程“B”通过foreach循环从集合中读取元素。
foreach (WorkspaceViewModel workspace in this.Workspaces)
{
. . . .
}
有时当线程“A”在集合中添加元素时,InvalideOperationException在foreach循环中的线程“B”中。此异常报告:“集合已被修改;枚举操作可能无法执行”。 如果我将foreach循环替换为for循环,它能解决我的问题吗?
答案 0 :(得分:0)
不,它无法帮助切换到for循环。
使用Concurrent Observable Collection
这是一个例子:
http://www.codeproject.com/Tips/274373/Concurrent-Observable-Collection
这是另一个:
http://www.codeproject.com/Articles/208361/Concurrent-Observable-Collection-Dictionary-and-So
你可以通过简单的谷歌搜索找到更多,并找到最适合你的。