首页 > 解决方案 > 尽管有 Console.ReadLine() 调用和更多代码,但 C# 控制台关闭

问题描述

以下代码导致控制台关闭(退出代码 0,告诉我程序已完成)。奇怪的是:它甚至没有进入switch (choice)声明。调试器向我显示该Console.ReadLine()语句已到达,但不是switch(choice).

请注意:

为什么即使还有代码要执行并且调试器清楚地表明它甚至没有到达后续代码,程序也会停止?

protected void PostTestMenu ()
    {
        string choice;
        Console.WriteLine(" ");
        Console.WriteLine(" ");
        Console.WriteLine(" ");
        Console.WriteLine("############## What next #############");
        Console.WriteLine("Repeat                               1");
        Console.WriteLine("Next                                 2");
        choice = Console.ReadLine();
        switch (choice)
        {
            case "1":
                Setup();
                break;
            case "2":
                program.Hauptmenue();
                break;
        }
    }

标签: c#command-lineconsole.readline

解决方案


现在使用https://dotnetfiddle.net/CVRBfF上的工作示例,您的问题很明显。启动程序时会发生什么?

  • 您的 Main 方法启动
  • Main 实例化一个新的 Program 对象
  • Main 设置一个计时器在 100 毫秒后滴答作响
  • Main 完成执行并退出
  • 退出 Main 后,程序执行完成,系统丢弃所有程序资源,包括挂起的计时器,因为程序已经退出。

您的应用程序在您的 100 毫秒间隔过去很久之前就退出了,因此您的 PostTestMenu 方法永远不会被调用。

如果你想让你的应用程序显示一些东西,你肯定需要在退出之前给它一些时间。最简单的方法是添加

Console.Readline();

到您的 Main(),就在结束 } 之前。


推荐阅读