相关疑难解决方法(0)

不注销事件处理程序是不是很糟糕?

如果我的应用程序只注册了几个事件处理程序(并且在应用程序关闭之前不会处理使用事件的对象),我是否真的需要担心取消注册这些处理程序?我能看到的唯一一个好理由是,如果事件被解雇你可能会有一些额外的开销,你不必关心(即你有多个处理程序注册到一个事件).还有其他好的理由吗?任何人都遇到重大问题,因为他们没有取消注册事件?

c# events event-handling

64
推荐指数
2
解决办法
8332
查看次数

在c#中使用后,我是否必须取消订阅按钮事件?

我正在使用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订阅,在未显示时取消订阅.

c#

5
推荐指数
1
解决办法
199
查看次数

标签 统计

c# ×2

event-handling ×1

events ×1