简单的 WPF 应用程序,带有简单、空的内容Window
其中我将事件处理程序连接到窗口Activated
event:
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
Activated += OnWindowActivated;
}
private void OnWindowActivated(object sender, EventArgs e)
{
throw new NotImplementedException();
}
}
当处理程序中抛出异常并且在其他地方未处理时,我预计应用程序会终止,但事实并非如此。 WPF 似乎在某个地方吞掉了异常,并且窗口弹出并继续正常运行。
Why?
这可能是与在 64 位操作系统上运行 32 位应用程序相关的问题。如果是这样的话,那么博客文章保罗·贝茨 http://blog.paulbetts.org/index.php/2010/07/20/the-case-of-the-disappearing-onload-exception-user-mode-callback-exceptions-in-x64/应该可以让您很好地了解发生了什么。
简而言之,对于 32 位进程来说,由于跨用户模式/内核模式边界的异常传播问题,.NET 框架会吃掉您的异常。对于 64 位进程,这种情况不会发生,因此测试这是否确实是您的问题的最简单方法是为“任何 CPU”平台重建您的测试应用程序并再次运行它。当我这样做时,正如人们所预料的那样,它崩溃了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)