【发布时间】:2010-09-04 01:06:44
【问题描述】:
在 WPF 中,我们有两个线程(至少):渲染和 UI 线程。当我在某些属性更改时引发事件 OnNotifyPropertyChanged 时,它会在 UI 线程上引发。需要将此信息分派到 WPF 渲染线程进行重新渲染。我假设它是以同步方式完成的( Dispatcher.Invoke ),但它是如何工作的?
如果我为同一个数据结构引发多个 OnNotifyPropertyChanged 事件,而没有锁定对已引发这些事件的该数据结构的访问器属性的访问,我是否会创建潜在的竞争条件?我已经看到来自 WPF 的臭名昭著的“集合已修改;枚举操作可能无法执行”异常,因此看起来 WPF 异步处理这些事件。我误解了例外吗?谢谢!
【问题讨论】:
-
你为什么不发布一个样本来重新创建这个?比如显示一些你经常从一些 DispatcherTimer 事件中更改的集合。
标签: wpf multithreading inotifypropertychanged