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