Environment.Exit与Main之间的简单返回2之间的区别

Kon*_*rin 18 .net exit-code

从应用程序的外部,是否有任何区别

...
Environment.Exit(2)
Run Code Online (Sandbox Code Playgroud)

static int Main()
{
    ...
    return 2;
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 19

最明显的区别是您可以从代码中的任何位置调用Environment.Exit.除此之外:

  • 如果有其他前台线程正在执行,则主要完成不会终止进程; Environment.Exit无论如何都会取消这个过程.
  • Environment.Exit终止进程而不展开堆栈并执行finally块(至少根据我的实验).显然,当你从Main托管代码中回归时,你已经处于最高级别.
  • 两者都给终结者一个机会在进程真正关闭之前执行
  • Environment.Exit 需要适当的安全权限,因此不适用于不太受信任的应用程序.

看到问题更新后,我不完全确定你的意思.在这两种情况下,该过程将以2的代码退出...


Dav*_*itt 7

Environment.Exit(2)可以随处使用.return 2仅在Main()功能范围内.