当前位置:  开发笔记 > 编程语言 > 正文

无法在多线程中运行ObservableCollection

如何解决《无法在多线程中运行ObservableCollection》经验,为你挑选了1个好方法。

似乎ObservableCollection仅支持从UI线程添加,删除,清除操作,如果它由NO UI线程操作,则抛出Not Support Exception.我试图覆盖ObservableCollection的方法,不幸的是,我遇到了很多问题.任何人都可以提供一个可由多线程操作的ObservableCollection示例?非常感谢!



1> Mark Ingram..:

使用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);

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有