0
我试图在C#中做一个控制台应用程序。当使用Console.ReadKey
和打字Ctrl + S应用程序似乎在另一个按键上“等待”,因为我键入的下一个键也被吃掉了。控制台中的Ctrl-S不起作用。它似乎在等待输入
我该如何防止这种情况发生?
我试图在C#中做一个控制台应用程序。当使用Console.ReadKey
和打字Ctrl + S应用程序似乎在另一个按键上“等待”,因为我键入的下一个键也被吃掉了。控制台中的Ctrl-S不起作用。它似乎在等待输入
我该如何防止这种情况发生?
经过一番挖掘,我可以想出如何做到这一点的唯一方法是调用一些本地方法来禁用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);