.net зависает на Application.DoEvents - PullRequest
3 голосов
/ 11 мая 2011

Одним из наших устаревших продуктов является приложение Winforms, и вместо использования фоновых потоков оно выполняет все в основном потоке пользовательского интерфейса.В этом основном потоке работает постоянный цикл, который вызывает Application.DoEvents () каждые 20 мс.Время от времени приложение просто зависает при вызове DoEvents.Мой вопрос заключается в том, как узнать, в каком вызове события из очереди висит код?

PS Кто-нибудь знает инструмент, который я могу использовать для получения трассировки стека каждого потока в процессе?

Кроме того, это происходит только на производственном клиенте, и мы должны исправить это сейчас.Также нет возможности установить VS на клиенте.

Ответы [ 2 ]

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

Вы можете сделать это в Visual Studio, просто присоединиться к процессу, прервать выполнение и открыть окна потоков.

Меню: Отладка-> Windows-> Темы

0 голосов
/ 12 мая 2011

Я нашел инструмент, который искал. WinDbg

Он может получить трассировки стека для текущего запущенного процесса Windows. Однако для этого приложения требуются файлы PDB.

...