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) 不退出程序的主要内容,如果未能解决你的问题,请参考以下文章

如何终止 Xamarin 应用程序?

c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit();Application.ExitThread(); System.Environmen

退出程序

WinForm 之 程序退出

c# 安全退出窗口

C# 彻底关闭程序,包括循环