程序关闭时的“第一次机会异常”

5

可能是重复问题:
当异常安全处理时,如何避免第一次机会异常消息

目前我正在开发一个需要与使用C++编写的DLL交互的WPF程序。然而,在一些调试过程中,我在Debug-Output窗口中看到了这条消息:“*“First-chance exception at 0x7637c41f in ***.exe: 0x0000071A: The remote procedure call was cancelled.”*”,就在我关闭程序后。

因为我无法消除这个异常,所以我从头开始创建了一个全新的WPF项目,并启用了“非托管代码调试”,结果没有任何其他设置或生成的源代码更改,仍然出现了同样的异常。

现在我想知道其他人是否遇到了相同的问题,以及如何解决它。

[编辑]

要重新产生此问题,我只需要:

  1. 创建一个新的 WPF 应用程序
  2. 在 WpfApplication1 属性 → 调试 → 启用非托管代码调试
  3. 开始调试
  4. 关闭 MainWindow
  5. 查看调试输出 (调试 → 窗口 → 输出)

请提供一段代码,以便重现此问题。 - sll
感谢您的关注。正如我所解释的那样,我没有更改任何自动生成的源代码。要重现此问题,我只需要启用“非托管代码调试”,并在执行未修改的WPF程序后查看Debug-Output窗口即可。 - user667967
要重现此问题,我只需要(1)创建一个新的WPF应用程序(2)在WpfApplication1属性->调试->启用非托管代码调试(3)开始调试(4)关闭MainWindow(5)查看Debug-Output(调试->窗口->输出)。 - user667967
4
哇,"被标记为完全重复"? 这个问题与 "可能的重复" 问题完全不同。 这个问题是关于在使用WPF时观察到的特定异常的。 即使在正常操作过程中抛出的一次性异常,也应该始终持怀疑态度,并且表明可能存在问题。提问者寻求解释是正确的。 - tgr42
1
我也遇到了完全相同的问题,还有另外一个首次机会。我也尝试了最小化的测试案例。虽然我已经忽略它多年了,但仍然感到不安。我发现WPF在很多方面都让人不安,并且总是建议使用Winforms或MFC。WPF的功能对于关键任务应用程序来说不值得冒险,而维护和复杂性使其变得更加危险。 - Robert
显示剩余5条评论
1个回答

0
如果你得到了一个“第一次机会异常”,但没有“未处理的异常”,那就意味着某个代码块抛出了异常,然后被捕获了。所以这实际上不是一个错误,很可能是按照预期工作的,你不必担心它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接