如何打破用户输入的循环?

时间:2018-06-04 12:32:21

标签: c# loops user-input

如果用户按下控制台中的某个键,我想中断或暂停do/while循环。我已经尝试了ReadLineReadKey,但我的程序停止了,它正在等待输入,但我只希望我的程序在用户输入后停止。

我的代码:

do
{   
    //do some code until user input
    Console.WriteLine("for settings: Press 's'");

    ConsoleKeyInfo cki;
    cki = Console.ReadKey();    // here the program stops and waits for input but I don't want it
    if (cki.Key.ToString() == "S")
    {
        Console.WriteLine("SETTINGS");
    }
} while (true);

2 个答案:

答案 0 :(得分:0)

当用户按下某个键时,查看(13, 1)这将是真的。如果是真的那么你可以Console.KeyAvailable

答案 1 :(得分:-1)

你不能让你的程序轻松完成,实际上是一次做两件事1)等待输入(readline / readkey做什么)和2)同时继续工作。

你可以通过启动你的逻辑在一个威胁上执行你的逻辑并在另一个线程上等待用户输入,然后在用户输入发生时在线程之间进行通信但是基于你的问题这可能是一个太强大的答案,你可以通过多线程执行此操作我很乐意写一个样本,但我认为它更容易混淆而不是帮助。