Почему графику нужно утилизировать? - PullRequest
1 голос
/ 16 ноября 2010

Почему Graphics необходимо утилизировать? также Pen и SolidBrush?

Ответы [ 2 ]

3 голосов
/ 16 ноября 2010

Ну, простой ответ - они реализуют «IDisposable», поэтому их нужно утилизировать.

Немного более длинный ответ - они потребляют неуправляемые ресурсы, которые должны быть освобождены. Вызывая dispose напрямую (или используя оператор using), вы можете освободить эти ресурсы, не дожидаясь, пока GC сделает это за вас.

3 голосов
/ 16 ноября 2010

Эти объекты являются обертками вокруг неуправляемых ресурсов, в частности объектов GDI +. Если эти объекты не расположены явно, то GC должен вызвать их финализатор. Это задержит возврат своих ресурсов для другого GC. * Это означает, что ваше приложение будет использовать больше ресурсов, чем необходимо.

ОБНОВЛЕНИЕ: уточненная формулировка выше плюс ... * Когда GC встречает объект с финализатором - при условии, что GC.SuppressFinalize () не был вызван в методе Dispose () - он ставит финализатор в очередь для запуска в потоке финализатора в будущем. Таким образом, память и ресурсы, используемые объектом, сохраняются до тех пор, пока, по крайней мере, GC не будет следовать за текущим запущенным.

...