处理控件后出现ObjectDisposedException

时间:2011-10-13 16:50:29

标签: dispose objectdisposedexception

我对我要提出的问题有一个真实世界的需要,但为了简单起见,我已将问题归结为此。

  • 创建C#窗体表单应用程序项目
  • 在表单中添加文本框和按钮。
  • 将Leave事件添加到文本框中。
  • 向按钮添加Click事件。

使用此代码

    private void textBox1_Leave(object sender, EventArgs e) {
        button1.Dispose();
    }

    private void button1_Click(object sender, EventArgs e) {
        MessageBox.Show("in button 1");
    }

运行项目并将光标放在文本框中。 现在点击按钮离开。

通过离开文本框,您可以使按钮处于Disposed状态,但按钮的Click事件位于文本框的Leave事件后面,等待处理。 但是没有文本框了,所以你得到了ObjectDisposedException。

所以,....问题是如何消除排队事件,以便我可以安全地处理按钮。

0 个答案:

没有答案