У меня довольно короткий вопрос о анонимных обработчиков событий:анонимных обработчиков событий и утилизации
Это код, который я имею:
public void AddTestControl(Control ctrl)
{
ctrl.Disposed += (o, e) => { RemoveTestControl(ctrl); };
ctrl.SomeEvent += _Control_SomeEvent;
}
public void RemoveTestControl(Control ctrl)
{
ctrl.SomeEvent -= _Control_SomeEvent;
}
Является ли этот код выше штраф, или если код быть перезаписаны, чтобы удалить Обработчик Обработанных Событий? Что-то вроде этого:
public void AddTestControl(Control ctrl)
{
ctrl.Disposed += _Control_Disposed;
ctrl.SomeEvent += _Control_SomeEvent;
}
public void RemoveTestControl(Control ctrl)
{
ctrl.Disposed -= _Control_Disposed;
ctrl.SomeEvent -= _Control_SomeEvent;
}
afaik nobody обещает выполнение порядка обработчиков событий. – b0rg
Но мой вопрос больше касается события Disposed. Нужно ли мне самостоятельно отсоединять его или это первый пример кода? – juFo
@juFo Предполагая, что причина, о которой вы просите, связана с тем, что вы беспокоитесь о утечке памяти, тогда ** нет, вам не нужно самостоятельно отсоединять обработчики событий **. Поскольку объект 'Control' имеет одинаковое время жизни' Page' или 'Form', содержащее обработчики событий, они будут выходить из области действия вместе. –