好吧,这很简单:

  • Application.ThreadException AppDomain.CurrentDomain.UnhandledException 有什么区别?
  • 我需要同时处理两者吗?

  • 谢谢!

    最佳答案

    Application.ThreadException特定于Windows窗体。 Winforms运行事件处理程序以响应Windows发送给它的消息。例如,单击事件,我确定您了解它们。如果这样的事件处理程序抛出异常,则Winforms消息循环中就会有一个捕获该异常的后台程序。

    该支持将触发Application.ThreadException事件。如果您不覆盖它,则用户将获得ThreadExceptionDialog。这使他可以忽略异常并继续运行您的程序。顺便说一句,这不是一个好主意。

    您可以通过在Program.cs的Main()方法中调用Application.SetUnhandledExceptionMode()来禁用此行为。没有适当的支持,当线程因未处理的异常而死亡时,通常会发生这种情况:AppDomain.UnhandledException触发,程序终止。

    Fwiw:“ThreadException”是一个非常糟糕的名称选择。它与线程无关。

    10-05 22:15