c#-4.0 - 取消订阅用户控件中的事件的标准方法

标签 c#-4.0 idisposable windows-forms-designer

我有一个正在监听事件的用户控件。

public partial class ObserverControl : UserControl
{
    public ObserverControl()
    {
        InitializeComponents();

        Observatory.DataUpdated += OnDataUpdate;
    }

    private void OnDataUpdated(object sender, EventArgs e)
    {
        // Process new data
    }
}

确保关闭此 UserControl 时取消订阅事件的最佳方法是什么?目前,它关闭了 Observatory 类,但仍在尝试向 ObserverControl 发送更新。

我考虑过使用 IDisposable,但我不太确定它是如何工作的(特别是因为 Dispose(bool dispose) 方法已在设计器代码中被重写)。

最佳答案

将 dispose 方法移出生成的文件并添加

        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);

            Observatory.DataUpdated -= OnDataUpdate;

        }

关于c#-4.0 - 取消订阅用户控件中的事件的标准方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10554900/

相关文章:

asp.net-mvc - ASP MVC : When is IController Dispose() called?

c# - 无法将自定义类型隐式转换为 IDisposable 错误

c# - 为什么正确实现 IDisposable 的方案很复杂?

c# - 阻止 Windows 窗体设计器设置属性的属性是什么

winforms - 在 .h 和 .cpp 文件之间拆分 C++/CLI 代码

asp.net-mvc - 与存储库设计模式的交易

c# - Windows 服务启动然后立即停止

c# - 给定一个类型,如何确定它装箱的类型?

c# - 检查对象是否为 ObservableCollection?

c# - 让设计者为 UserControl 的简单 List 属性生成 AddRange