【问题标题】:Correct way to exit from a console application [duplicate]从控制台应用程序退出的正确方法[重复]
【发布时间】:2016-05-25 10:46:21
【问题描述】:

我已经阅读了一些 herehere,但我仍然对是否应该在我的控制台应用程序中使用 Enviorment.Exit() 感到困惑。

在一个方法中,如果用户在提示符下退出,我有以下代码,

if(userSelect == "exit")
{
    Environment.Exit(0);
}

更新:

class Program
{
    public static void Main(string[] args)
    {
        Console.WriteLine("Welcome to my Console App");
        Console.WriteLine();
        consoleManager();
    }


    public static void consoleManager()
    {
        string consolePrompt = "ConsoleApp\">";

        string whichMethod = "";
        Console.Write(consolePrompt);
        whichMethod = Console.ReadLine();

        if(whichMethod == "view enties")
        {
            viewEntry();
        }
        else
            if(whichMethod == "Add Entry")
            {
                addEntry();
            }
            else
                if(whichMethod == "exit")
                {
                    //what to do here
                }
                else
                {
                    help();
                }
    }

【问题讨论】:

  • 我认为您第二个链接中接受的答案说明了一切
  • 请注意,在main 方法之外的任何地方退出应用程序是不常见的。如果你在main 方法中,一个简单的return 0; 语句就足够了,而且更可取。
  • @CodyGray - 我更新了我的代码,你能告诉我如何从我的方法中正确退出我的应用程序吗?
  • 你现在已经删除了代码,我不知道为什么。有两种可能性:(1) 将该代码移动到 main 方法中(没有理由将它放在自己的函数中),(2) 更改该函数以返回一个值——要么 false 关闭,要么一个 int对应于 main 的返回值。在您的 main 方法中检查该函数的结果并相应地返回。
  • 并不是Environment.Exit不行(虽然在多线程的应用中效果不好,但是你不是写的),只是一个设计好的应用程序通常不需要使用它。只有一种情况下它的使用是有意义的,那就是在用户可以选择退出的某种菜单中,并且可以明智地写成从 main 中返回。

标签: c# console-application


【解决方案1】:

浏览 MSDN 文档 - Environment.Exit,它解释了参数

exitCode 参数,使用非零数字表示错误。在 您的应用程序,您可以定义自己的错误代码 枚举,并根据 设想。例如,返回值 1 表示 所需文件不存在,值为 2 表示 文件格式错误。

所以如果你说 Exit(0),你会说你的进程成功退出,没有任何错误。如果您使用任何System Error Code,您将在错误时通知操作系统。在您的情况下,Environment.Exit(0) 就足够了。

编辑 我很确定,你想多了。需要考虑的要点 -

  1. 如果您从 Main 退出,一个简单的 return 语句就足够了。
  2. 在其他地方使用 Enviorment.Exit(),因为 return 语句会将您返回到 Main 方法并且程序仍将继续运行。
  3. 希望您熟悉void Main(string[] args)int Main(string[] args)。不同的是返回值。如果您想返回错误代码,则使用它,0 表示成功,其他数字表示各种错误。您可以很好地使用上面链接的系统错误代码。
  4. 归根结底——控制台程序的调用者是否使用返回值。如果它是您正在运行的 dos 提示符,它将被忽略。如果某个外部应用程序正在运行您的控制台,它可能会处理您的输出。

【讨论】:

  • 如果足够了,那为什么 Cody Gray 说它不寻常?它有什么不寻常之处?
猜你喜欢
  • 2011-06-06
  • 2011-09-07
  • 1970-01-01
  • 2012-09-13
  • 1970-01-01
  • 2014-09-04
  • 2010-10-24
  • 2015-11-15
  • 2011-06-23
相关资源
最近更新 更多