gpt4 book ai didi

.net - 在监听DependencyProperty更改时是否应该使用弱事件监听器?

转载 作者:行者123 更新时间:2023-12-05 00:37:32 25 4
gpt4 key购买 nike

我在寻找WeakEventManager实现的框架,该实现监听DependencyProperties的更改。我发现唯一的弱属性更改事件监听器PropertyChangedEventManager令我感到困惑,它设计用于实现INotifyPropertyChanged的类型。

这是否意味着如果您监听DependencyProperty进行更改

DependencyPropertyDescriptor
.FromProperty(target, target.OwnerType)
.AddValueChanged(component, handler)

我不必担心泄漏通过事件注册保持事件的实例吗?

最佳答案

DependencyPropertyDescriptor泄漏大量时间,因此,我遇到了很多问题。除非您明确调用RemoveValueChanged,否则所有组件都将被 Root 。在内部,它维护HashTableEventHandler。这是它的作用:

if (this.valueChangedHandlers == null)
this.valueChangedHandlers = new Hashtable();
EventHandler eventHandler = (EventHandler) this.valueChangedHandlers[component];
this.valueChangedHandlers[component] = (object) Delegate.Combine((Delegate) eventHandler, (Delegate) handler);

由于属性描述符被缓存,因此所有组件都将被 Root 。

关于.net - 在监听DependencyProperty更改时是否应该使用弱事件监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6780159/

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