似乎ObservableCollection仅支持从UI线程添加,删除,清除操作,如果它由NO UI线程操作,则抛出Not Support Exception.我试图覆盖ObservableCollection的方法,不幸的是,我遇到了很多问题.任何人都可以提供一个可由多线程操作的ObservableCollection示例?非常感谢!
使用Kent提供的链接,您可以使用以下代码修改跨线程的集合:
while (!Monitor.TryEnter(_lock, 10)) { DoEvents(); } try { //modify collection } finally { Monitor.Exit(_lock); }
但是,如果您只想修改原始线程上的集合,可以尝试使用UI线程的回调.我通常做这样的事情:
this.Dispatcher.Invoke(new MyDelegate((myParam) => { this.MyCollection.Add(myParam); }), state);