如果我的应用程序只注册了几个事件处理程序(并且在应用程序关闭之前不会处理使用事件的对象),我是否真的需要担心取消注册这些处理程序?我能看到的唯一一个好理由是,如果事件被解雇你可能会有一些额外的开销,你不必关心(即你有多个处理程序注册到一个事件).还有其他好的理由吗?任何人都遇到重大问题,因为他们没有取消注册事件?
我正在使用Windows窗体.
我的C#应用程序包含100个user controls.user controls当我需要并隐藏其余部分时,我会显示/隐藏其中一个.其中每个user controls都有30个buttons,我button在构造函数中订阅了以下事件:
public UserControl1()
{
InitializeComponent();
button1.Click += new EventHandler(MyButtonClick);
button2.Click += new EventHandler(MyButtonClick);
.
.
button30.Click += new EventHandler(MyButtonClick);
}
void MyButtonClick(object sender, EventArgs e)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
因此,当我运行应用程序时,所有100个User controls订阅30 buttons事件和一些user controls订阅事件但在使用应用程序期间从不使用它们.
我读了一些关于退订事件,在这里和这里,但一些答案,说你应该取消,因为它会导致内存泄漏,有人说你没有,所以答案尚不清楚.
我的问题是,button在使用它之后我必须取消订阅事件:例如:当我显示/隐藏a时user control.如果是,我如何button在显示a时从事件user control订阅,在未显示时取消订阅.