.net - 为什么 WPF 会吞下在 Window.Activated 的事件处理程序中抛出的异常?

标签 .net wpf exception

简单的 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/

相关文章:

c# - .NET:十进制到四舍五入的字符串

c# - 在 C# 中显示来自另一个应用程序的 WPF 窗口

java - 什么是异常错误,我该如何解决?

c# - 在没有设置参数的情况下抛出异常时的行为是什么?

c# - 不留/少留痕迹

c# - 大型 WCF Web 服务请求因 (400) HTTP Bad Request 而失败

c# - 哪种是 Asp.Net MVC 4.0 或更高版本中依赖注入(inject)的最佳方法?

c# - WPF:如何在 DockPanel 中拉伸(stretch)中间的 child ?

c# - 创建和打印一个简单的表格

java - 将 JTextField 转换为 int 数组(有异常(exception))