Как просмотреть активные события .Net при пошаговом выполнении кода? - PullRequest
0 голосов
/ 30 августа 2018

Как отследить, какие события в данный момент «активны» или обрабатываются в данный момент при пошаговом выполнении кода.

Выпуск

Когда я отлаживал код (шагая по нему) в довольно большом приложении, внезапно я обнаружил, что код, который запускался, выполнялся через код в функциях, которые не имели никакого отношения к коду, который я устранял. Мне потребовалось немало времени, чтобы понять, почему я обнаружил, что перебираю код в функциях, выходящих далеко за пределы кода, который я отлаживал.

Оказывается, при запуске приложения к определенным элементам управления добавляются обработчики, а также элементы управления таймером. Таймер запускает событие каждые 5 минут или около того. Были и другие события, которые запускались при выполнении определенных действий, однако я понятия не имел, что заставляло отладчик выполнять определенные функции из-за того, что не было никаких признаков или «подсказок», сообщающих мне, что событие было запущено, и именно поэтому Теперь я вступал в другие функции.

Как мне узнать о том, что происходит, когда события запускаются так, как я упоминал выше?

Примечание

Это не вопрос о том, как добавлять или удалять обработчики в коде.

1 Ответ

0 голосов
/ 30 августа 2018

Так что в основном таймеры все еще работают в том же потоке, что и основная логика. Каждый раз, когда выполняется функция / Событие, и Окно входит в ожидающую часть, в которой считывается несертифицированный ввод и запускаются события, запускаются таймеры. они не будут работать, пока другие события заняты. Если вы используете Background Worker или запускаете вторые потоки. они будут бегать между вами текущими шагами, и визуальная студия будет переходить от одного к другому. есть окно потока, чтобы отслеживать все активные потоки, но это только дает подсказку. иногда все еще раздражает переход от одной функции к другой. Я советую использовать атрибут, скрытый отладчиком, для тех функций, которые продолжают вас беспокоить.

Как найти окно темы:

Как просмотреть окно «Потоки» в Visual Studio?

Как использовать скрытый отладчик:

https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.debuggerhiddenattribute?redirectedfrom=MSDN&view=netframework-4.7.2

и

https://social.msdn.microsoft.com/Forums/vstudio/en-US/cf20736c-cbfb-4919-b495-ea9a9235f9e5/debuggerhiddenattribute-example?forum=csharpgeneral

...