2

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

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

4

1 回答 1

2

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

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

            Observatory.DataUpdated -= OnDataUpdate;

        }
于 2012-05-11T16:21:10.260 回答