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