看来 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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)