退出.net应用程序的所有可能方法



我刚刚在我的项目中添加了一些(仅限MSIL)dll,并调用其中的方法。现在应用程序随机崩溃,没有在日志中留下任何错误消息(stdout、stderr、本应记录所有异常的应用程序日志和windows应用程序日志)。当然,有几种方法可以解决这个问题,比如在(反编译的)源中为Application.Exit等进行grepping,但有一个问题比这个狭隘的问题更普遍:

除了之外,还有什么方法可以使用MSIL退出.net应用程序

  • Application.Exit
  • Environment.Exit
  • Environment.FailFast
  • Process.GetCurrentProcess().Kill
  • 通过[DllImport]调用任何内容
  • new Thread(_ => { throw new Exception(); }).Start()(感谢用户626528)

如果后台线程中存在未处理的异常,则应用程序可能会被CLR终止。您可以使用AppDomain.CurrentDomain.UnhandledException来记录这些事件(但您不能使用它来阻止它们终止您的应用程序)。您需要将catch块放在所有后台线程的顶部函数中,以防止应用程序因未处理的异常而终止。

相关内容

  • 没有找到相关文章

最新更新