Tag: 退订

使用IDisposable来取消订阅事件

我有一个类来处理来自WinForms控件的事件。 基于用户在做什么,我正在引用该类的一个实例,并创build一个新的来处理同一个事件。 我需要首先从事件中退订旧实例 – 很简单。 如果可能的话,我想以非专有的方式做到这一点,这似乎是一个IDisposable的工作。 但是,大多数文档仅在使用非托pipe资源时才推荐使用IDisposable,这在此不适用。 如果我在Dispose()中实现了IDisposable和取消订阅这个事件,我是否在歪曲它的意图? 我应该提供一个Unsubscribe()函数并调用它吗? 编辑:这里有一些虚拟代码,显示我在做什么(使用IDisposable)。 我的实际实施涉及到一些专有的数据绑定(长篇故事)。 class EventListener : IDisposable { private TextBox m_textBox; public EventListener(TextBox textBox) { m_textBox = textBox; textBox.TextChanged += new EventHandler(textBox_TextChanged); } void textBox_TextChanged(object sender, EventArgs e) { // do something } public void Dispose() { m_textBox.TextChanged -= new EventHandler(textBox_TextChanged); } } class MyClass { EventListener […]