Я хочу получить событие для каждого необработанного исключения в моем приложении, чтобы я мог записать его в файл журнала. Приложение запускалось как приложение Windows Forms, где это можно легко сделать, подписавшись на статическое событие System.Windows.Forms.Application.ThreadException
и вызвав System.Windows.Forms.Application.SetUnhandledExceptionMode
.
В чистом приложении WPF это тоже просто, мне просто нужно подписаться на DispatcherUnhandledException
экземпляр System.Windows.Application
экземпляра.
Но как я могу сделать это для смешанного приложения (то есть приложения Windows Forms с некоторыми диалоговыми окнами и элементами управления WPF), где у меня нет глобального System.Windows.Application
экземпляра? System.Windows.Application.Current
- это null
при запуске, когда я пытаюсь подписаться на событие. Я пытался создать свой собственный экземпляр System.Windows.Application
, но, очевидно, он разрушается, когда закрывается первое окно WPF. Если после этого я попытаюсь открыть другое окно WPF, я получу EngineExecutionException
.