Предположим, что мне открыли форму через.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)
Спасибо.
В этом случае вам не нужно удалять обработчики, поскольку ни на форму, ни на ее кнопки не ссылается внешний по отношению к форме код, и поэтому весь граф объектов будет собран в мусор.
Нет, вам не нужно удалять обработчики событий из элементов управления закрывающейся формы. Все они будут утилизированы вместе.
Вы, вероятно, думаете о веб-страницах, на которых необходимо удалить обработчики событий, чтобы избежать утечки памяти в браузере.