繁体   English   中英

ReadKey 在线程超时结束之前获取字符

[英]ReadKey getting characters pressed before a thread timeout has ended

我正在尝试我的第一个 c# 基于控制台的游戏。 我创建了一个居中的学分介绍,最后印有“按任意键继续...”。 我使用Console.ReadKey()在等待用户输入时模拟暂停。 问题是您可以“堆叠”输入,可能有一个更好的术语,但本质上,当控制台处于超时状态时,仍会读取关键输入并排队等待超时结束。 例如;

//10 second wait
//this is where I would press a key
Thread.Sleep(10000);
char x = Console.ReadKey().KeyChar;
//x will be equal to whatever key I pressed before the timeout

这不是我想要的功能。 有人对此有解决方案吗? 不使用Thread.Sleep()Console.ReadKey()

如果您仍然不理解问题,请在Thread.Sleep()仍然有效并且 readkey 时按一个键,时间到后将打印该字符。 有谁知道如何停止读取密钥?

如果您想要实际的项目代码,请询问。 虽然我认为这与这个问题无关。

如果要在等待密钥之前清除缓冲区,只要有KeyAvailable ,就可以在循环中调用Console.ReadKey(true) true传递给方法指定应该截取密钥,而不是 output 到控制台 window。

例如:

Thread.Sleep(TimeSpan.FromSeconds(10));

// Clear buffer by "throwing away" any keys that were pressed while we were sleeping
while(Console.KeyAvailable) Console.ReadKey(true);

char x = Console.ReadKey().KeyChar;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM