18

从应用程序外部来看,两者之间有什么区别

...
Environment.Exit(2)

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

?

4

3 回答 3

19

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

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

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

于 2009-09-24T07:35:53.683 回答
7

Environment.Exit(2)可以在任何地方使用。return 2只在Main()函数内。

于 2009-09-24T07:32:42.183 回答
2

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

Program.Main(args);

那么 Environment.exit 将始终反映失败。使用 return 将按预期工作。

于 2013-08-12T18:20:21.280 回答