Sea*_*ean 5 .net c# events dispose
假设我有两个类,它们都不是GUI组件.A类是一个短期对象,它注册由长期存在的对象B声明的事件.例如
public A(B b)
{
b.ChangeEvent += OnChangeEvent;
}
Run Code Online (Sandbox Code Playgroud)
如果A永远不会从B的事件中退出,A将永远不会被垃圾收集?是否需要一个Dispose方法来取消注册B的事件?
还有一个相关的第二个问题.如果A和B都应该在应用程序的整个执行时间内存在,A是否需要取消注册?
对于你的第一个问题:是的。B 引用了 A。这样,A 的生存时间就和 B 一样长。如果您注册了像 App.OnIdle 这样的事件,那么这是释放 UI 应用程序内存的好方法。
对于第二个:到最后一切都会被杀死。
| 归档时间: |
|
| 查看次数: |
2715 次 |
| 最近记录: |