如何在混合的WinForms / WPF应用程序中获取每个未处理异常的事件

时间:2011-10-05 07:06:43

标签: .net wpf winforms

我想在我的应用程序中为每个未处理的excpetion获取一个事件,因此我可以将其写入日志文件。该应用程序作为Windows窗体应用程序启动,通过订阅静态System.Windows.Forms.Application.ThreadException事件并调用System.Windows.Forms.Application.SetUnhandledExceptionMode可以轻松完成此操作。

在纯WPF应用程序中,它也很简单,我只需要订阅System.Windows.Application实例的DispatcherUnhandledException事件。

但是我如何为混合应用程序(即带有一些WPF对话框窗口和控件的Windows窗体应用程序)执行此操作,其中我没有全局System.Windows.Application实例?当我尝试订阅活动时,System.Windows.Application.Current在启动时为null。我已经尝试创建自己的System.Windows.Application实例,但显然它会在第一个WPF窗口关闭时被销毁。如果我之后尝试打开另一个WPF窗口,我会得到一个EngineExecutionException

1 个答案:

答案 0 :(得分:1)

你试过这个 -

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);