取消订阅用户控件中的事件的标准方法

时间:2012-05-11 16:03:55

标签: 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 disposing)方法已经在设计器代码中被覆盖了。)

1 个答案:

答案 0 :(得分:1)

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

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

            Observatory.DataUpdated -= OnDataUpdate;

        }