У меня есть несколько Debug.Assert
операторов в коде выключения моего приложения winforms. Когда я использую ConsoleTraceListener
, Debug.Assert
ведет себя так, как вы ожидаете. Когда я использую DefaultTraceListener
, всплывающее окно подтверждения блокируется, и кнопки перестают отвечать, а трассировка стека показывает вложенное исключение при обработке сообщений моего основного окна.
It могло бы показаться, что Debug.Assert
фактически возобновляет накачку сообщений моего основного окна.
Я копался в справочном источнике. NET Framework, чтобы выяснить, как это могло произошло (например, возможно Debug.Assert
вызывает все oop из Application.DoEvents()
) и обнаружил, что внутренне DefaultTraceListener
вызывал MessageBoxW
.
Если MessageBoxW
вызывал GetMessageW
со своим собственные hWnd
, это не будет отправлять сообщения для моего главного окна, верно? Поэтому я правильно предположил, что по какой-то причине MessageBoxW
вызывает GetMessageW
с NULL hWnd
?