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

时间:2009-09-24 07:26:39

标签: .net exit-code

从应用程序外部,

之间是否有任何区别
...
Environment.Exit(2)

static int Main()
{
    ...
    return 2;
}

3 个答案:

答案 0 :(得分:18)

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

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

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

退出

答案 1 :(得分:7)

Environment.Exit(2)可以在任何地方使用。 return 2仅在Main()函数中。{/ p>

答案 2 :(得分:2)

如果您正在进行单元测试并且正在调用Main

Program.Main(args);

然后Environment.exit将始终反映失败。使用return的方式将按预期工作。