首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制台ReadKey超时

控制台ReadKey超时
EN

Stack Overflow用户
提问于 2013-12-17 15:24:35
回答 2查看 7.8K关注 0票数 10

我已经构建了一个简单的控制台应用程序,并且我需要为用户提供一个特定的时间来输入keychar。

我应该用这个吗?

代码语言:javascript
复制
System.Threading.Thread.Sleep(1000);

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

这个是可能的吗?

EN

回答 2

Stack Overflow用户

发布于 2013-12-17 15:39:22

我会这样做:

代码语言:javascript
复制
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);
票数 22
EN

Stack Overflow用户

发布于 2013-12-17 15:28:39

问题:如果您使用Thread.Sleep()等待1秒,它会在给定的时间段内挂起主线程。

解决方案:您可以使用System.Timers.Timer等待给定的时间。

试试这个:

代码语言:javascript
复制
    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();
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20628279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档