我试图在 C#中创建一个控制台应用程序。当使用Console.ReadKey
并输入 Ctrl + S 时,应用程序似乎正在等待"在另一个按键上,因为我输入的下一个键也会被吃掉。
如何防止这种情况发生?
答案 0 :(得分:0)
经过一些挖掘,我能弄清楚如何做到这一点的唯一方法是调用一些本机方法来禁用ENABLE_LINE_INPUT
。我不知道为什么会这样,因为ENABLE_LINE_INPUT
的文档说:
ReadFile或ReadConsole函数仅在读取回车符时返回。如果禁用此模式,则当一个或多个字符可用时,函数将返回。
这似乎并不相关。特别是因为ReadKey
无论如何都不会等待return
。
也许其他人可以更好地解释一下?
代码:
int mode = 0;
GetConsoleMode(handle, ref mode);
mode &= ~0x0002; // Disable ENABLE_LINE_INPUT. Lets ctrl-s work for some reason.
SetConsoleMode(handle, mode);