4 .net wpf events weak-references weakeventmanager
我正在框架中查找WeakEventManager的实现,该实现侦听DependencyProperties的更改.我发现唯一的弱属性更改事件侦听器PropertyChangedEventManager被设计用于实现INotifyPropertyChanged的类型,这让我感到有点困惑.
这是否意味着如果您收听DependencyProperty进行更改
DependencyPropertyDescriptor
.FromProperty(target, target.OwnerType)
.AddValueChanged(component, handler)
Run Code Online (Sandbox Code Playgroud)
我不必担心因事件登记而活着的实例泄露?
DependencyPropertyDescriptor泄漏的时间很长,我因此而遇到很多问题.除非您明确调用RemoveValueChanged所有组件将被root.在内部它保持HashTable的EventHandler.这是它的作用:
if (this.valueChangedHandlers == null)
this.valueChangedHandlers = new Hashtable();
EventHandler eventHandler = (EventHandler) this.valueChangedHandlers[component];
this.valueChangedHandlers[component] = (object) Delegate.Combine((Delegate) eventHandler, (Delegate) handler);
Run Code Online (Sandbox Code Playgroud)
由于属性描述符被缓存,因此所有组件都将被植根.
| 归档时间: |
|
| 查看次数: |
940 次 |
| 最近记录: |