我有一个正在收听事件的用户控件。
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)
方法已经在设计器代码中被覆盖了。)
答案 0 :(得分:1)
将dispose方法移出生成的文件并添加
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
Observatory.DataUpdated -= OnDataUpdate;
}