0

我的 .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 循环,它可以解决我的问题吗?

4

1 回答 1

0

不,它不能帮助切换到 for 循环。

使用并发 Observable 集合

这是一个例子:

http://www.codeproject.com/Tips/274373/Concurrent-Observable-Collection

这是另一个:

http://www.codeproject.com/Articles/208361/Concurrent-Observable-Collection-Dictionary-and-So

您可以使用简单的谷歌搜索找到更多内容并找到最适合您的内容。

于 2013-09-11T07:55:12.477 回答