我构建了一个简单的控制台应用程序,我需要给用户一个特定的时间来输入一个keychar。
我应该使用它吗?
System.Threading.Thread.Sleep(1000);
对于那些不理解的人,我需要程序在Console.ReadKey().KeyChar;
秒后跳过x
。
这可能吗?
答案 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();
}