Вопрос

Какова наилучшая практика для реализации IDisposable в Winform?

  • У меня есть диалоговое окно, которое расширяет систему.Windows.Формы.Формировать
  • Созданный designer.cs уже содержит реализацию метода virtual Dispose(bool)
  • В моей форме есть поле, добавленное вручную, которое реализует IDisposable

В идеале я мог бы подключиться к переопределению Dispos (bool) в сгенерированном коде, чтобы удалить добавленный вручную IDisposable объект.Есть какие-нибудь рекомендации о том, как это сделать правильно?

Спасибо.

Скотт

Это было полезно?

Решение

Вы можете переместить эту реализацию Dispose из .designer.cs в свой .cs.

Другие советы

Но тогда ваше поле должно быть Компонентом (реализовать интерфейс IComponent или что-то подобное).Не было бы это немного чересчур ?

Может быть, вы можете прикрепить обработчик событий к удаляющему событию и удалить свои поля в этом обработчике событий ?

(Или просто добавьте их в метод Dispose - я не думаю, что это будет проблемой, поскольку afaik, код в методе Dispose не восстанавливается ...В идеале реализация метода Dispose не должна была находиться в классе *.designer.cs ...).

Я отменяю регистрацию любых событий в методе Dispose, найденном в designer.cs формы

    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        _frmFind.RaiseFindEvent -= _frmFind_RaiseFindEvent;
        base.Dispose(disposing);
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top