roc*_*eye 3 .net c# events garbage-collection mvvm
我读了问题的答案.事件处理程序是否阻止了垃圾收集的发生?,但是当发布者成为目标时会发生什么?
更具体地说,我正在为WPF应用程序使用MVVM设计.Model-View类会在每次更改时引发NotifyPropertyChanged.在某些类中,我需要在修改某些内容时调用方法.
我想这样做:
this.PropertyChanged += this.MyHandler;
Run Code Online (Sandbox Code Playgroud)
这个实例会被GC破坏吗?
GC查看并查看对象的任何引用当前是否以应用程序为根.它足够聪明,可以像上面那样处理循环引用.
此外,它足够聪明,可以处理你有两个对象A和B的情况,以及:
A.Event += B.Handler;
B.Event += A.Handler;
Run Code Online (Sandbox Code Playgroud)
如果A和B都超出范围,GC就足够聪明地找到并清除这两个对象,即使它们相互订阅.但是,如果一个单独的对象(在使用中)引用任何一个,它将阻止两者被收集.
与参考计数解决方案相比,这是真正的GC解决方案的主要优势之一.引用计数将无法收集此信息,但.NET gc将完美地处理它.
归档时间: |
|
查看次数: |
352 次 |
最近记录: |