捕获击键而不阻塞

capture keystroke without blocking

我通常使用 Console.ReadLine(); 来捕获单个击键。但是这个函数会阻塞执行并一直等待它发生。

是否有可能在一个循环中,如果按下就捕获它,如果没有按下则继续执行?

最好的是类似于 GUI 应用程序的东西,它保留 运行 并且只要执行快捷方式,它就会被拦截并抛出一个事件来捕获。但我怀疑控制台应用程序是否能够做到这一点。

第二好的解决方案是 Console.ReadLine(); 等待 1 秒然后 returns。如果用户在调用该函数时按住键盘按钮,该函数将使用其字符标识击键和 returns,否则函数 returns 为 null。

你读过MSDN Key press info for console了吗?

您可以使用Console.KeyAvailable来确定您是否真的想要在队列中获取密钥。