WPF数据绑定线程安全吗?

Pet*_*ter 28 data-binding wpf multithreading

好吧,假设我有一个我数据绑定的对象,它实现了INotifyPropertyChanged,以便在值发生变化时告诉GUI ...

如果我从一个不同于GUI线程的线程触发这个,wpf将如何表现?

它会确保它从内存中获取属性的值而不是cpu缓存吗?

或多或少即时通知询问wpf是否对包含该属性的对象执行lock()...

Rob*_*sor 41

触发的值更改INotifyPropertyChanged 会自动编组回调度程序.(http://blog.lab49.com/archives/1166)

在您喜欢的任何主题上触发此事件......


触发的值更改未INotifyCollectionChanged 可靠地编组到调度程序上.(http://csharplive.wordpress.com/2008/09/11/wpf-data-binding-observablecollection-cross-thread-binding-support/)

如果需要从其他线程更新可观察集合,请按照此链接中的建议操作

  • csharplive.wordpress.com失败,有什么建议可以遵循? (7认同)
  • 对于WPF4.5并非如此真实:https://msdn.microsoft.com/en-us/library/bb613588(v=vs.110).aspx#xthread_access (2认同)

Dav*_*vy8 -1

在实践中,它似乎按预期工作,并且似乎是线程安全的(没有看到任何奇怪的情况发生或由于后台线程更新而出现异常)。我相信它会在需要时调用 UI 线程,但我不太熟悉内部结构。