控制台中的Ctrl-S无法正常工作。它似乎在等待投入

时间:2016-10-05 04:56:59

标签: c# console-application

我试图在 C#中创建一个控制台应用程序。当使用Console.ReadKey并输入 Ctrl + S 时,应用程序似乎正在等待"在另一个按键上,因为我输入的下一个键也会被吃掉。

如何防止这种情况发生?

1 个答案:

答案 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);