【发布时间】:2011-01-06 17:05:47
【问题描述】:
我有一个ObservableCollection<A> a_collection; 该集合包含“n”个项目。每个项目 A 如下所示:
public class A : INotifyPropertyChanged
{
public ObservableCollection<B> b_subcollection;
Thread m_worker;
}
基本上,它都连接到 WPF 列表视图 + 详细信息视图控件,该控件在单独的列表视图中显示所选项目的 b_subcollection(2 向绑定、属性更改的更新等)。
当我开始实现线程时,问题就出现了。整个想法是让整个 a_collection 使用它的工作线程“工作”,然后更新各自的 b_subcollections 并让 gui 实时显示结果。
当我尝试它时,我得到一个异常,说只有 Dispatcher 线程可以修改 ObservableCollection,并且工作停止了。
谁能解释一下这个问题,以及如何解决它?
【问题讨论】:
-
试试下面的链接,它提供了一个线程安全的解决方案,可以在任何线程上工作,并且可以通过多个 UI 线程绑定:codeproject.com/Articles/64936/…
标签: c# wpf multithreading observablecollection