【问题标题】:Difference between Environment.Exit and simple return 2 from MainEnvironment.Exit 和 Main 的简单返回 2 之间的区别
【发布时间】:2009-09-24 07:26:38
【问题描述】:

从应用程序之外,有什么区别

...
Environment.Exit(2)

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

?

【问题讨论】:

    标签: .net exit-code


    【解决方案1】:

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

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

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

    【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 更新问题 - 与应用程序外部有什么不同吗?
    【解决方案3】:

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

    Program.Main(args);
    

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

    【讨论】:

      猜你喜欢
      • 2019-10-23
      • 1970-01-01
      • 2012-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-19
      • 1970-01-01
      相关资源
      最近更新 更多