C# 控制台中的 CTRL-C 延迟

CTRL-C Delay in C# Console

提问人:Orxan Həsənzadə 提问时间:9/28/2023 最后编辑:Orxan Həsənzadə 更新时间:9/28/2023 访问量:48

问:

当我的 C# 代码运行时,我按下 CTRL-C 以停止它运行。但是,它会在大约 1 秒后停止,并根据 switch 的“默认”情况运行。

我想让它立即停止。我错过了什么?我有几个这样的开关,这都发生在它们身上。除了开关之外,do-while 循环也存在同样的问题。它们都以默认情况处理 CTRL-C 输入,打印输入错误消息,然后阻止程序进一步执行。

    public static void ManageMainMenu() 
    {
        string? userInput;
        do
        {
            Console.WriteLine("-----------------------------------------------------------");
            Console.WriteLine("Please select your preferred option below:");
            Console.WriteLine("1. Foods");
            Console.WriteLine("2. Drinks");
            Console.WriteLine("3. Exit");

            userInput = Console.ReadLine()?.Trim(); 
            switch (userInput) 
            {
                case "1":  
                    MenuManagement.ManageFoods(); 
                    break;
                case "2": 
                    MenuManagement.ManageDrinks();
                    break;
                case "3": 
                    Environment.Exit(0);
                    break;
                default: 
                    Console.WriteLine("Invalid Input! Please choose from the options above (1, 2, 3): ");
                    break;
            }
        } while (userInput != "3"); 
    }
}

这是我立即按下 CTRL-C 时得到的结果:

Invalid Input! Please choose from the options above (1, 2, 3): 
-----------------------------------------------------------
Please select your preferred option below:
1. Foods
2. Drinks
3. Exit

Process finished with exit code 0.
C# 控制台 switch-statement do-while ctrl

评论

0赞 Jeremy Lakeman 9/28/2023
那要看情况。您是否正在使用通用主机?还是你只有一个基本的方法?你可以通过事件拦截,如果你还没有这样做,那么操作系统的默认设置是杀死你的程序。MainCtrl+CConsole.CancelKeyPress

答: 暂无答案