使用析构函数分离事件

起司

在项目中已经注意到此代码:

因此,有一个自定义的TextBox:

public sealed class CoolTextBox : TextBox
{
    ...
    public CoolTextBox()
    {
        this.DefaultStyleKey = typeof(CoolTextBox);
        this.TextChanged += this.CoolTextBox_TextChanged;
    }

    ~CoolTextBox()
    {
        this.TextChanged -= this.CoolTextBox_TextChanged;
    }
    ...
}

我从未写过这种类型的构造。但据我所知,Google提供的信息表明您不应该信任析构函数,因为它们可以随时调用。

我应该删除析构函数吗?

乔治·希里亚尔

终结器仅应用于清理非托管资源。可以以任何顺序调用它们,并具有最长的执行时间。

如果您有任何非托管资源,请使用Dispose模式

如果您没有任何非托管资源,请实施IDisposable

您应该清除的事件是您要处置的类在另一个寿命更长的对象上的事件中注册的地方。

如果可以event完全避免使用s,甚至更好,因为忘记注销处理程序可以防止垃圾回收。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章