Как отловить (и, надеюсь, устранить) утечку ресурсов GDI - PullRequest
4 голосов
/ 15 мая 2009

Мое приложение регистрирует исключение после 6 часов работы:

Версия ОС: Microsoft Windows NT 5.1.2600 с пакетом обновления 3 (5.1.2600.196608)

.NET Версия: 2.0.50727.3082

Версия SQL Server: 9.00.4035.00

Уровень SQL Server: SP3

SQL Server Edition: стандартная версия

Сообщение об ошибке: параметр недействителен.

Тип исключения: System.ArgumentException

Источник: System.Drawing

Stack Trace: 
at System.Drawing.Graphics.GetHdc()
at System.Windows.Forms.ImageList.GetBitmap(Int32 index)
at System.Windows.Forms.ImageList.ImageCollection.get_Item(Int32 index)
<<< MY code >>>

Ответы [ 2 ]

4 голосов
/ 15 мая 2009

Недавно я создал простой класс, который вызывает функцию GetGuiResources() как в конструкторе, так и в деструкторе и сообщает о любых различиях в количестве объектов GDI. Использование его в качестве объекта области действия в нескольких функциях помогло мне устранить утечки GDI в коде.

2 голосов
/ 15 мая 2009

GDIView работал на меня. Это указывало на утечку шрифта. Я сделал поиск ToHfont (). Остальное уже история.

...