В настоящее время я поддерживаю приложение WinForms, которое прослушивает событие Application.ThreadException
, чтобы перехватывать необработанные исключения в потоках GUI.
Теперь все работает как ожидалось до недавнего времени.Но в последнее время это событие больше не вызывается соответствующим образом на некоторых производственных коробках;приложение пропускает обработчик и просто падает, когда в потоке графического интерфейса есть необработанное исключение.Как ни странно, я могу воспроизвести это на моем (новом) устройстве dev, но есть некоторые машины, на которых событие действительно вызывается правильно.
Я могу сделать поведение согласованным, явно установивполитика, подобная этой:
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Но мне любопытно узнать, что контролирует политику по умолчанию.MSDN делает смутные намеки на «файл конфигурации приложения», но в нашем app.config или любом другом файле конфигурации, о котором я знаю, такой настройки политики нет.
В чем причина этого противоречивого поведения?