System.Environment.Exit(0) 不退出程序
Posted
技术标签:
【中文标题】System.Environment.Exit(0) 不退出程序【英文标题】:System.Environment.Exit(0) does not exit program 【发布时间】:2017-03-20 14:32:02 【问题描述】:我在 Visual Studio 2013 上有一个控制台应用程序。 .NET 4.5 我希望程序在完成某项任务后退出。所以,我用 System.Environment.Exit(0); 但它不会退出。它只显示在控制台上: 按任意键继续。
如何退出程序? 提前致谢。
这里我检查目录是否为空,然后退出程序,我也试过把 System.Environment.Exit(0);在 main 函数中,但它什么也没做。
if (Directory.GetFiles(@"Q:\").Length == 0)
System.Environment.Exit(0);
【问题讨论】:
你能贴一些代码吗? 我更新了问题 如果您使用的是Main
方法,则只需 return
。
它只显示在控制台上:按任意键继续。看起来像从 IDE 运行控制台应用程序时的标准行为。如果直接运行可执行文件,会发生同样的情况吗?
当您按 Ctrl+F5 而不是 F5 启动程序时发生。功能,而不是错误,它可以让您在关闭控制台窗口之前查看程序输出。没有它,它就会一闪而过,砰的一声,消失了。当您从桌面上的快捷方式启动程序时会发生这种情况。
【参考方案1】:
Press any key to continue
就像上面已经说过的评论一样,这听起来很像您的 IDE(可能是 Visual Studio)在进程终止后会打印出来的内容。在我的机器上,当我运行控制台应用程序而不附加调试器时,我会收到此消息,例如使用 Ctrl+F5 启动它。一旦我按下一个键,Visual Studio 生成的控制台窗口就会关闭。这是预期的行为。
尝试在附加调试器的情况下运行您的程序,例如按 F5。或者从命令提示符启动程序,而不是从 IDE 启动它。那时不应显示该消息。
另请注意,如果您有一个多线程程序,并且有非后台线程在运行,即使主线程已终止,这些线程也可以保持进程处于活动状态。
【讨论】:
【参考方案2】:退出控制台应用程序最优雅的方式是从Main
方法返回。
只需如下声明你的 main 方法:
public static int Main(string[] args)
你可以使用
return x;
使用给定的返回码退出应用程序。
【讨论】:
Application.Exit 给了我这两个错误: 错误 2 只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句 错误 1 'Application' is a ambiguous reference between between 'System.Windows.Forms.Application' 和 'System.Windows.Application' @Mike 我没有谈论Application.Exit
- 你在正确的地方发表评论了吗?
返回 x;不退出应用程序
不退出应用程序还是不退出控制台窗口?因为从主方法返回总是会结束应用程序。
完成任务后不关闭应用程序控制台窗口【参考方案3】:
试试Application.Current.Shutdown()
【讨论】:
错误 2“System.Windows.Forms.Application”不包含“当前”的定义错误 1“Application”是“System.Windows.Forms.Application”和“System”之间的模糊引用.Windows.Application' 为什么在控制台应用程序中同时引用 Windows 窗体和 WPF 程序集?以上是关于System.Environment.Exit(0) 不退出程序的主要内容,如果未能解决你的问题,请参考以下文章
c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit();Application.ExitThread(); System.Environmen