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

У меня есть пользовательский TraceListener, который должен заменить DefaultTraceListener, чтобы я мог делать такие вещи, как настройка диалогового окна, которое отображается, когда пользователь нажимает Debug.Assert.

Когда мое приложение работает не совсем правильно, я подключаю отладчик и пытаюсь запросить свойства, чтобы увидеть их значение. Иногда эти свойства вызывают Debug.Assert.

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

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


person benjamin.popp    schedule 13.12.2020    source источник


Ответы (1)


Я временно решил проблему, используя Debugger.IsAttached. Если это так, то подключен отладчик, и я отключаю пользовательский диалог и просто возвращаюсь к DefaultTraceListener.Fail. Это не идеально, потому что это означает, что мой пользовательский диалог появляется только тогда, когда к нему не подключен отладчик. Но это означает, что мои пользователи увидят его в той ситуации, в которой я этого хочу (в режиме отладки без отладчика), что, я думаю, достаточно хорошо.

person benjamin.popp    schedule 14.12.2020