Console ReadKey超时

时间:2013-12-17 07:24:35

标签: c#

我构建了一个简单的控制台应用程序,我需要给用户一个特定的时间来输入一个keychar。

我应该使用它吗?

System.Threading.Thread.Sleep(1000);

对于那些不理解的人,我需要程序在Console.ReadKey().KeyChar;秒后跳过x

这可能吗?

2 个答案:

答案 0 :(得分:12)

我会这样做:

DateTime beginWait = DateTime.Now;
while (!Console.KeyAvailable && DateTime.Now.Subtract(beginWait).TotalSeconds < 5)
    Thread.Sleep(250);

if (!Console.KeyAvailable)
    Console.WriteLine("You didn't press anything!");
else
    Console.WriteLine("You pressed: {0}", Console.ReadKey().KeyChar);

答案 1 :(得分:0)

问题:如果您使用Thread.Sleep()等待1秒钟,它会将主线程挂起一段时间。

解决方案:您可以使用System.Timers.Timer等待一段时间。

试试这个:

    System.Timers.Timer timer1 = new System.Timers.Timer();
    timer1.Interval=1000;//one second
    timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Tick);
    timer1.Start();
    char ch;
    private void timer1_Tick(object sender, System.Timers.ElapsedEventArgs e)
    {
        ch=Console.ReadKey().KeyChar;
        //stop the timer whenever needed
        //timer1.Stop();
    }