Нужно ли вызывать Dispose () для управляемых объектов? - PullRequest
28 голосов
/ 31 марта 2010

Я не могу поверить, что я все еще смущен этим, но, в любом случае, давайте, наконец, прибить это:

У меня есть класс, который переопределяет OnPaint для рисования. Чтобы ускорить процесс, я создаю ручки, кисти и т. Д. Перед конструкцией, чтобы OnPaint не нуждался в их создании и утилизации.

Теперь я уверен, что я всегда располагаю такими объектами, но у меня такое ощущение, что мне это не нужно, потому что, несмотря на то, что они реализуют IDisposable, они являются управляемыми объектами.

Это правильно?


Спасибо за все ответы, вопрос, безусловно, был прибит.
Я рад, что всегда был бдителен, всегда используя «использование», так что мне не нужно проходить всю мою проверку кода. Я просто хотел пояснить, что я не бессмысленный пользователь.

Кроме того, недавно у меня возникла странная ситуация, когда мне пришлось заменить блок using и вручную вызвать dispose! Я выкопаю это и создам новый вопрос.

Ответы [ 12 ]

0 голосов
/ 14 октября 2016

см. Мой ответ здесь в аналогичной теме. он должен ответить на ваш вопрос и объяснить последствия, если вы не позвоните в компанию Dispose.

Что произойдет, если я не вызову Dispose для объекта Pen

0 голосов
/ 18 октября 2011

Хотя вы спрашивали о ручках и кистях, Font - это класс со странными причудами. В частности, если кто-то создает шрифт с целью установки свойства Font элемента управления, он остается ответственным за удаление этого шрифта - право собственности не переходит к элементу управления, но эту ответственность можно выполнить, выбрав шрифт в в любое время, даже если шрифт создан, прежде чем назначить его элементу управления. Кажется, что Font является комбинацией управляемого информационного объекта и неуправляемого ресурса GDI, и для некоторых целей требуется только первое. Странный дизайн - шрифт должен был быть двух классов.

...