是否可以在我的C#应用程序中禁用System.Console XOFF/XON流量控制处理?

是否可以在我的C#应用程序中禁用System.Console XOFF/XON流量控制处理?,c#,.net,windows,remote-desktop,windows-console,C#,.net,Windows,Remote Desktop,Windows Console,我是一名基于控制台的服务器软件的开发人员,在按下Enter键之前,它有时似乎会锁定输入。我怀疑这是System.Console窗口中的XOFF/XON(Ctrl-S/Ctrl-Q流控制)处理 是否可以(使用.NET调用或Win32 API函数)在使用System.Console执行输出和输入命令的C#/.NET应用程序中禁用XOFF/XON流控制处理?(这也会影响其他系统控制台,如CMD.EXE windows,但我不关心这些情况。)我的应用程序是服务器软件;永远不要使用冻结控制台的键,尤其是可

我是一名基于控制台的服务器软件的开发人员,在按下Enter键之前,它有时似乎会锁定输入。我怀疑这是System.Console窗口中的XOFF/XON(Ctrl-S/Ctrl-Q流控制)处理

是否可以(使用.NET调用或Win32 API函数)在使用System.Console执行输出和输入命令的C#/.NET应用程序中禁用XOFF/XON流控制处理?(这也会影响其他系统控制台,如CMD.EXE windows,但我不关心这些情况。)我的应用程序是服务器软件;永远不要使用冻结控制台的键,尤其是可能意外触发的键

不知何故,我相信我的服务器应用程序的控制台在输入时得到了Ctrl-s,或者可能认为在输入s时按下了Ctrl限定符。控制台锁定,直到我按下回车键。(我想Ctrl-Q也会发布它,但现在还没有机会测试它。)

我的进程是.NET上的C#服务器,它们是运行Windows Server的Hyper-V虚拟机上使用System.Console.ReadLine()的控制台

这可能是问题原因的关键:我正在通过远程桌面(RDP)连接到Hyper-V主机。一种想法是RDP断开连接丢失了一个Ctrl键,然后输入的下一个“S”(由我们的指挥自动化软件)锁定了终端。我们最终将用基于网络的命令输入来取代它,但与此同时,我们正在解决这个问题,这需要工作人员手动干预才能使服务器重新运行

进一步信息:我尝试了以下方法,以防平板电脑的RDP会话触发快速编辑模式,但这并没有停止锁定:

        GetConsoleMode(handle, out oldmode);

        int newmode = oldmode;
        newmode |= ENABLE_EXTENDED_FLAGS;   // required to disable the next two
        newmode &= ~ENABLE_QUICK_EDIT_MODE; // force this OFF
        newmode &= ~ENABLE_MOUSE_INPUT;     // force this OFF
        newmode &= ~ENABLE_WINDOW_INPUT;    // force this OFF
        newmode |= ENABLE_INSERT_MODE;      // force this ON
        if (newmode != oldmode)
        {
            SetConsoleMode(handle, newmode);

我不太熟悉堆栈溢出,但也许有人能解释为什么有人会否决这个问题。这似乎是堆栈溢出的理想选择,因为这是一个编码软件以与操作系统交互的问题,对于使用system.Console(或系统控制台)的服务器软件来说,这是一个重大问题,堆栈溢出或Google上的任何地方似乎都没有涉及到这一问题。(我在发帖前找了几个小时。)我在问:有人知道一个Win32 API可以完成这个操作吗?在Linux控制台上,这可以通过“stty-ixon”来实现。除了实际的串行端口外,似乎没有与Windows API等效的接口。它似乎是硬编码的,总是在Windows下启用,这对于服务器或实时应用程序来说是一个非常糟糕的情况。您应该修复标题,以明确您正在尝试更改自己的应用程序(使用控制台子系统)的行为。现在听起来你好像在试图影响内置程序。在MSDN、StackOverflow甚至谷歌搜索中似乎根本没有这方面的内容,所以我意识到我可能问了“错误的问题”。也许我不需要禁用XON/XOFF流控制;我只是不希望WriteLine仅仅因为有人按了Ctrl-S或其他什么,就阻塞了正常控制台窗口的输出。我不确定这到底是怎么发生的,除了我们的几个控制台每周都会出现这个问题,直到工作人员连接并点击回车键。如果有人除了重写我自己的控制台类之外还有其他现成的选择,我愿意接受建议。是的,这非常令人惊讶。我几乎确信你疯了,这是一个shell函数,不是CSRSS.exe(控制台子系统)的一部分,直到我自己尝试了它。想要禁用或拦截这些是非常合理的。我想您已经测试过了,看看在使用这些组合时是否得到了控制台控制处理程序回调(原因没有记录在案)?您也尝试过其他控制台模式标志吗?