gpt4 book ai didi

wpf - INotifyPropertyChanged:幕后发生了什么?

转载 作者:行者123 更新时间:2023-12-02 18:09:32 26 4
gpt4 key购买 nike

在 WPF 中,我们(至少)有两个线程:渲染线程和 UI 线程。当我针对某些属性更改引发事件 OnNotifyPropertyChanged 时,它会在 UI 线程上引发。需要将此信息分派(dispatch)到 WPF 渲染线程进行重新渲染。我假设它是以同步方式完成的( Dispatcher.Invoke ),但它实际上是如何工作的?

如果我为同一数据结构引发多个 OnNotifyPropertyChanged 事件,但没有锁定对此已引发这些事件的数据结构的访问器属性的访问,我是否会创建潜在的竞争条件?我已经看到来自 WPF 的臭名昭著的“集合已修改;枚举操作可能无法执行”异常,因此看起来 WPF 异步处理这些事件。我是否误解了异常?谢谢!

最佳答案

异常“集合已修改;枚举操作可能无法执行”与 WPF 无关,当您使用 foreach 迭代集合时,它会从 IEnumerator 引发,并且在执行此操作时集合会以某种方式更改(添加/删除/修改) )。 (例如:http://social.msdn.microsoft.com/forums/en/netfxbcl/thread/7ce02724-2813-4f7d-8f3c-b1e3c1fd3019/).

除此之外,我从未遇到过因同时调用 PropertyChanged 事件而导致的异常。

关于wpf - INotifyPropertyChanged:幕后发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3640503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com