IDisposable Winform - PullRequest
       17

IDisposable Winform

1 голос
/ 16 января 2009

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

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

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

Спасибо.

Scott

Ответы [ 3 ]

5 голосов
/ 16 января 2009

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

2 голосов
/ 16 января 2009

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

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

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

1 голос
/ 02 ноября 2012

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

    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        _frmFind.RaiseFindEvent -= _frmFind_RaiseFindEvent;
        base.Dispose(disposing);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...