C# - Удаляющий обработчики событий - событие FormClosing или Располагают () метод

Предположим, что мне открыли форму через.ShowDialog () метод.

В какой-то момент я присоединяю некоторые обработчики событий к некоторым средствам управления на форме.

например.

// Attach radio button event handlers.
this.rbLevel1.Click += new EventHandler(this.RadioButton_CheckedChanged);
this.rbLevel2.Click += new EventHandler(this.RadioButton_CheckedChanged);
this.rbLevel3.Click += new EventHandler(this.RadioButton_CheckedChanged);

Когда форма закрывается, я должен удалить эти обработчики, правильно?

В настоящее время я делаю это, когда событие FormClosing запущено.

например.

private void Foo_FormClosing(object sender, FormClosingEventArgs e)
{
    // Detach radio button event handlers.
    this.rbLevel1.Click -= new EventHandler(this.RadioButton_CheckedChanged);
    this.rbLevel2.Click -= new EventHandler(this.RadioButton_CheckedChanged);
    this.rbLevel3.Click -= new EventHandler(this.RadioButton_CheckedChanged);
}

Однако я видел некоторые примеры, куда обработчики удалены в Расположении () метод.

Существует ли 'лучшая практика' способ сделать это?

(Использование C#, Winforms.NET 2.0)

Спасибо.

13
задан Andy 2 May 2010 в 17:47
поделиться

2 ответа

В этом случае вам не нужно удалять обработчики, поскольку ни на форму, ни на ее кнопки не ссылается внешний по отношению к форме код, и поэтому весь граф объектов будет собран в мусор.

18
ответ дан 1 December 2019 в 22:38
поделиться

Нет, вам не нужно удалять обработчики событий из элементов управления закрывающейся формы. Все они будут утилизированы вместе.

Вы, вероятно, думаете о веб-страницах, на которых необходимо удалить обработчики событий, чтобы избежать утечки памяти в браузере.

3
ответ дан 1 December 2019 в 22:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: