简单的 WPF 应用程序,带有一个普通的空 Window
,我在其中将事件处理程序连接到 Window 的 Activated
事件:
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
Activated += OnWindowActivated;
}
private void OnWindowActivated(object sender, EventArgs e)
{
throw new NotImplementedException();
}
}
当异常在处理程序中抛出并且在其他任何地方都未处理时,我希望应用程序终止,但它没有。 WPF 似乎在某处吞下了异常,并且窗口弹出并继续正常运行。
为什么?
最佳答案
这可能是与在 64 位操作系统上运行 32 位应用程序相关的问题。如果是这样,那么 Paul Betts 的博文应该让你知道发生了什么。
简而言之,对于 32 位进程,由于跨用户模式/内核模式边界传播异常的问题,.NET 框架似乎吞噬了您的异常。对于 64 位进程,这不会发生,因此测试这是否确实是您的问题的最简单方法是为“任何 CPU”平台重建您的测试应用程序并再次运行它。当我这样做时,它会像人们预期的那样崩溃。
关于.net - 为什么 WPF 会吞下在 Window.Activated 的事件处理程序中抛出的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12358353/