gpt4 book ai didi

c# - 使用析构函数分离事件

转载 作者:行者123 更新时间:2023-11-30 23:01:08 25 4
gpt4 key购买 nike

在项目中注意到这段代码:

所以有一个自定义的TextBox:

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

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

我从来没有写过这种类型的结构。但据我所知,来自谷歌的信息表明你不应该相信析构函数,因为它们可以随时调用。

我应该只删除析构函数吗?

最佳答案

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

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

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

您应该清理的事件是您要处理的类被注册到另一个对象上的事件的地方,该对象的生命周期会更长。

如果您可以完全避免使用 event,那就更好了,因为忘记注销处理程序会阻止垃圾回收。

关于c# - 使用析构函数分离事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51220972/

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