GDI + Region, Matrix и GraphicsPath утилизация - PullRequest
1 голос
/ 30 мая 2011

Я заметил, что классы Matrix, GraphicsPath и Region реализуют IDisposable.Из того, что я понимаю, если класс реализует этот интерфейс, тогда требование Dispose является требованием, но я не понимаю, почему эти классы реализуют его.Какие системные ресурсы используют эти классы, что требуется для их освобождения.В моем проекте у меня есть несколько пользовательских фигур, которые нужно нарисовать, и я использовал эти классы для хранения преобразований и геометрической информации об этих объектах, которые я бы использовал для вещей, не всегда связанных с рисованием (таких как тестирование попаданий и управление расположением объектов).), но, похоже, я не могу этого сделать, поскольку они используют ресурсы, и наличие множества этих объектов может замедлить работу всей системы.Может ли кто-нибудь прокомментировать это?Возможно, я ошибаюсь в своих предположениях, и эти предметы не обязательно должны быть утилизированы?

Ответы [ 2 ]

2 голосов
/ 30 мая 2011

Используя такой инструмент, как Reflector или ILSpy, вы можете самостоятельно изучить методы утилизации.Я проверил случай Matrix, он высвобождает некоторые нативные ссылки в методе Dispose(bool).

1 голос
/ 30 мая 2011

GDI + использует неуправляемые ресурсы, при вызове dispose эти ресурсы освобождаются и могут использоваться системой повторно. Не вызывая утилизацию, вы блокируете память до тех пор, пока GC не обработает ее.

...