У меня есть приложение WinForms .Net, которое работает с большим количеством документов XPS (тысячи), и во время этого запуска число дескрипторов (согласно монитору процессов sysinternals и диспетчеру задач) увеличивается на 3-10 для каждого документа. Я сильно подозреваю, что это дескрипторы, которые открываются и не закрываются библиотеками инфраструктуры MS .Net XPS, но я не могу их отследить.
Несмотря на пошаговое выполнение кода, количество дескрипторов увеличивается в разных точках во время одного и того же прогона. Например, один проход по циклу, и количество дескрипторов будет прыгать на 1 в одной строке, а в следующий раз - нет, а может - на 2. Поэтому я подозреваю, что компоненты XPS com имеют утечку дескриптора.
Хотя использование памяти нормально, но если я продолжу истощать дескрипторы, подобные этой, то я вывожу приложение и, возможно, рабочий стол.
До сих пор я пробовал sysinternals Process Explorer, чтобы посмотреть на дескрипторы, но все они помечены как без подробностей. Также использовался файл handle.exe от sysinternals, и это не показывает существенных различий между снимком «до», «во время» и «после».
Есть какие-нибудь подсказки, как отследить, куда идут ручки? Я думаю, мне придется упростить однопоточное консольное приложение для тестирования.
Привет
Ryan