我正在尝试创建一个线程,我在控制台应用程序中检查按键。这个想法是,如果10分钟内没有按键,则用户将被注销。
我在这个小线程中产生了我尝试使用Console.In.Peek();在没有读取密钥的情况下获得按键,因此主线程实际上可以释放ReadKey / ReadLine。但是,我发现按下第一个键Console.In.Peek();停止阻塞,循环反复无阻碍。
任何想法为什么Console.In.Peek();在第一次按键后停止阻止以及任何想法如何修复它?非常感谢!
public static void AuthTimer()
{
while (true)
{
Console.In.Peek();
Thread.Sleep(1000);
//Console.ReadKey();
Console.WriteLine("auth timer");
if (Authentication.Authenticated == true)
{
Authentication.AuthTime = DateTime.Now;
}
}
}
编辑编辑编辑
感谢Stackoverflow上的优秀人员的评论,我放弃了Console.In.Peek()并切换到
if(Console.KeyAvailable == true)
它没有从流中取出密钥并且似乎阻塞直到按下某个键才能有效地解决我的问题!多谢大家的评价。