Как отладить ошибку «Ошибка создания дескриптора окна»? - PullRequest
1 голос
/ 16 марта 2009

Я пытаюсь отладить ошибку, исходящую из приложения на базе Windows .NET. Сообщение об ошибке выглядит примерно так: «Ошибка создания дескриптора окна». При исследовании этой ошибки Я обнаружил, что вероятной причиной является , что приложение использует более 10000 пользовательских дескрипторов .

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

Итак, кто-нибудь из вас сталкивался с подобной проблемой? Если да, как вы его отладили?

Ответы [ 2 ]

2 голосов
/ 16 марта 2009

Существует 2 вероятных причины этой проблемы в приложении WinForm

  1. Вы не активно утилизируете экземпляры Control и Form в своем приложении. Так сложнее решить проблему, так как со временем GC очистит ручки, но все еще возможно.
  2. PInvoke в собственный API и не закрывать полученные дескрипторы

Это были бы первые 2 места, которые я бы проверил. Другая идея заключается в том, чтобы перейти прямо к источнику и начать отладку утечки дескриптора. Вот несколько ссылок о том, как этого добиться.

0 голосов
/ 16 марта 2009

Другой возможной причиной этого является некоторый элемент управления, генерирующий исключение внутри OnHandleCreated или связанного с ним события HandleCreated . Я считаю, что это может привести к ошибкам, аналогичным тому, что вы видите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...