C# .NET 正确的事件订阅和取消订阅

标签 c# .net event-handling

我有一个连续运行的应用程序,它创建和销毁类,其中一些类具有鼠标单击事件等事件...... 第一个问题是取消订阅的正确方法是什么?如果订阅看起来像这样:

Panel1.MouseClick += new MouseEventHandler(Action_MouseClick);

像这样取消订阅是否正确:

Panel1.MouseClick -= new MouseEventHandler(Action_MouseClick);

或者可以这样做吗:

Panel1.MouseClick -= Action_MouseClick;

或者这两种方式都可以吗?

我的另一个问题是,如果我使用 Microsoft Visual C# studio 通过设计器创建事件,它是否会作为“Dispose”方法的一部分自动取消订阅?或者我还需要将取消订阅方法放在代码中吗?

最佳答案

任何一种退订方式都会产生相同的效果,并且都是正确的。

至于你的另一个问题..如果你使用设计器为表单上的控件创建事件,当表单被处理时,事件源不再存在,因此它们不会被调用。我想我是说没有必要分离这些事件。

关于C# .NET 正确的事件订阅和取消订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3241074/

相关文章:

c# - 为什么 BinaryFormatter 默默地中断进程?

VS2005 中的 C# : will this() execute the base constructor code for an inherited class?

c# - winform 上 this.close 调用后执行代码

C# 事件处理(与 Java 相比)

macos - 在 Swift 中将点击处理程序添加到 NSTextField

c# - 如何在azure上托管和部署ASP.Net core 2.0 Web api?

c# - 如示例所示,将 SendGrid 包与 C# "Web"一起使用是未定义的

c# - 在可移植类库中实现自定义异常

c# - 如何使用 GitHub DB API 提交对文件的更改

c# - 无法将 Action<object, EventArgs> 转换为 EventHandler?