Компоненты CommonDialog должны быть утилизированы? - PullRequest
3 голосов
/ 10 ноября 2010

Использование блоков кода или метода Dispose в этом примере MSDN о диалоговых окнах не использовалось.

Но почему он не удаляется несмотря на то, что у него есть метод Dispose?

Ответы [ 3 ]

2 голосов
/ 10 ноября 2010

Хм, это не кристально ясно, к сожалению.OpenFileDialog и друзья наследуют Dispose () из класса Component.Каждый компонент должен реализовывать Dispose (), потому что метод Dispose () формы вызывает его.Просто так получилось, что есть несколько производных классов Component, у которых есть метод ничего не делать Dispose ().Классы диалога такие, они диалоги.Они очищают любые неуправляемые ресурсы, когда диалог закрывается.Дополнительная помощь не требуется.

Это не совсем хорошо документировано.Это несколько видно, библиотека MSDN показывает, что метод был унаследован, а не переопределен классом.Что еще не делает очевидным, что обход унаследованного метода Component.Dispose () - это нормально (это так).Если вам неудобны многие программисты, не стесняйтесь обернуть это выражением используя .Не вредно вызывать метод Dispose (), который ничего не делает.Ну, не тот вред, который ты когда-либо сможешь измерить.

0 голосов
/ 10 ноября 2010

Сборщик мусора убирает за вами, если вы явно не вызывали Dispose().
Большую часть времени вы можете рассчитывать на сборщик мусора, если вы не очень точны в очистке.минутное использование памяти после каждой сборки.

0 голосов
/ 10 ноября 2010

Что ж, их финализатор будет в конечном счете вызван сборщиком мусора, и, поскольку они не содержат (много) неуправляемых ресурсов (и, конечно, ничего, кроме дескрипторов открытых файлов), они не стали беспокоиться об этом в качестве примера.

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

...