gpt4 book ai didi

c# - 自处理事件是否会阻止实例被垃圾收集?

转载 作者:行者123 更新时间:2023-11-30 13:35:10 25 4
gpt4 key购买 nike

我阅读了问题的答案Do event handlers stop garbage collection from occuring? ,但是当发布者是目标时会发生什么?

更具体地说,我正在为 WPF 应用程序使用 MVVM 设计。模型 View 类在每次更改时都会引发 NotifyPropertyChanged。在某些类中,我需要在修改某些内容时调用方法。

我想这样做:

this.PropertyChanged += this.MyHandler;

这个实例会被 GC 销毁吗?

最佳答案

GC 会查看该对象的任何引用当前是否在应用程序中。它足够聪明,可以像上面那样处理循环引用。

此外,它足够聪明,可以处理您有两个对象 A 和 B 的情况,并且:

A.Event += B.Handler; 
B.Event += A.Handler;

如果 A 和 B 都超出范围,GC 会很聪明地找到并清除这两个对象,即使它们相互订阅也是如此。但是,如果一个单独的对象(在使用中)引用其中任何一个,它将阻止两者被收集。

与引用计数解决方案相比,这是真正的 GC 解决方案的主要优势之一。引用计数将无法收集它,但 .NET gc 会完美地处理它。

关于c# - 自处理事件是否会阻止实例被垃圾收集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/888750/

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