Environment.Exit 和 Main 的简单返回 2 之间的区别
Posted
技术标签:
【中文标题】Environment.Exit 和 Main 的简单返回 2 之间的区别【英文标题】:Difference between Environment.Exit and simple return 2 from Main 【发布时间】:2009-09-24 07:26:38 【问题描述】:从应用程序之外,有什么区别
...
Environment.Exit(2)
和
static int Main()
...
return 2;
?
【问题讨论】:
【参考方案1】:最明显的区别是您可以从代码中的任何位置调用 Environment.Exit。除此之外:
如果有其他前台线程在执行,主整理不会终止进程;Environment.Exit
无论如何都会取消这个过程。
Environment.Exit
终止进程 不展开堆栈并执行 finally 块(至少根据我的实验)。显然,当您从 Main
返回时,就托管代码而言,您已经处于顶层。
两者都让终结者有机会在进程真正关闭之前执行
Environment.Exit
需要适当的安全权限,因此不适用于可信度较低的应用。
看到问题更新后,我不完全确定您的意思。在这两种情况下,进程都会以 2 的代码退出...
【讨论】:
请参阅***.com/questions/713805/net-finalizers-and-exit0,了解有关流程结束时完成的详细信息。【参考方案2】:Environment.Exit(2)
可以在任何地方使用。 return 2
仅在 Main()
函数内。
【讨论】:
更新问题 - 与应用程序外部有什么不同吗?【参考方案3】:如果您正在执行单元测试并调用 Main
Program.Main(args);
然后 Environment.exit 将始终反映失败。使用 return 将按预期工作。
【讨论】:
以上是关于Environment.Exit 和 Main 的简单返回 2 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章
System.Environment.Exit(0) 不退出程序
Winforms:Application.Exit vs Environment.Exit vs Form.Close