Отладка дескриптора окна в Winforms
Вопрос
У меня есть пользователь, который продолжает получать эту ошибку. Есть ли инструмент для подсчета дескрипторов окон, который я могу использовать, чтобы выяснить, почему он продолжает получать эту ошибку.
System.ComponentModel.Win32Exception: Ошибка создания дескриптора окна. в System.Windows.Forms.NativeWindow.CreateHandle (cp CreateParams) в System.Windows.Forms.Control.CreateHandle () в System.Windows.Forms.Form.CreateHandle () в System.Windows.Forms.Control.get_Handle () в System.Windows.Forms.Form.ShowDialog (владелец IWin32Window)
Решение
Лучший счетчик, который я знаю, это Taskmgr.exe. Просмотр + Выбор столбцов и отметка «Пользовательские объекты», «Обработка количества» и "Объекты GDI".
Общая диагностика заключается в том, что у вас протекают ручки и вы потребляете 10000 из них Остерегайтесь ошибки утечки дескриптора в .NET 2.0 SP1 и .NET 3.5 Graphics.CopyFromScreen (), исправленных в 3.5 SP1.
Другие советы
Если создаваемая вами форма переопределяет WndProc (), убедитесь, что она всегда вызывает base.WndProc () в процессе создания окна.
Я случайно пропустил вызов base.WndProc () в своем переопределении и получил трассировку стека.