ObjectDisposedException после удаления элемента управления - PullRequest
0 голосов
/ 13 октября 2011

У меня есть реальная потребность в том, что я собираюсь спросить, но для простоты я свел проблему к этому.

  • Создание проекта приложения для окон на 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");
    }

Запустите проект и поместите курсор в текстовое поле. Теперь выйдите, нажав на кнопку.

Выйдя из текстового поля, вы заставляете кнопку «Уничтожиться», но событие Click для кнопки находится за событием «Выход» текстового поля, ожидая обработки. Но текстового поля больше нет, поэтому вы получаете исключение ObjectDisposedException.

Итак, ... вопрос в том, как мне исключить событие из очереди, чтобы можно было безопасно избавиться от кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...