【发布时间】:2010-11-20 05:49:17
【问题描述】:
我对 C# 类及其解构器有点困惑。
我必须在构造函数中获取的类实例中使用一些事件处理程序:
public Foo(IFooHandler handler)
{
handler.Load += Load;
handler.Close += Close;
}
当 Foo 类被销毁时,我需要取消订阅该事件。我是在其中实现IDisposable 并在其中取消订阅,还是在解构函数中?我需要消耗这些事件,我不能以其他方式做到这一点。
对于其中一个类,我创建了一个实例,检查进度,然后该类实例超出范围。另一方面,它保留在MainForm 中,直到表单关闭。第一个是我担心的,因为它可能仍然有对该事件处理程序的引用并且不能正常运行。
我不想泄露内存。我应该何时以及如何退订?
【问题讨论】:
标签: c# winforms events delegates