【问题标题】:System.Environment.Exit(0) does not exit programSystem.Environment.Exit(0) 不退出程序
【发布时间】: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 启动程序时发生。功能,而不是错误,它可以让您在关闭控制台窗口之前查看程序输出。没有它,它就会一闪而过,砰的一声,消失了。当您从桌面上的快捷方式启动程序时会发生这种情况。

标签: c# system.exit


【解决方案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 程序集?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 2013-10-18
    相关资源
    最近更新 更多