控制台命令行程序卡壳现象,命令行的“快速编辑模式”概念
http://t.zoukankan.com/stonemjl-p-13530774.html
(1)手动解决
windows cmd->属性->选项->编辑选项
取消 快速编辑模式
cmd默认开启了“快速编辑模式”,只要当鼠标点击cmd任何区域时,就自动进入了编辑模式,之后的程序向控制台输入内容甚至后台的程序都会被阻塞。
我们在控制台里面回车或者右键鼠标后,自动退出了编辑模式。因此,控制又恢复输出内容,服务端又正常了。
选择快速编辑模式的时候,鼠标不小心点到cmd某个位置,都可能让正在运行的进程都卡住,直到按下回车后,会跳出一堆。
(2)自动解决
拖动或点击CMD窗口造成程序阻塞,这是因为windows默认cmd窗口启用快速编辑模式,关闭即可。在bat文件中关闭cmd窗口的快速编辑模式,bat文件如下:
@echo off reg add HKEY_CURRENT_USERConsole /v QuickEdit /t REG_DWORD /d 00000000 /f


控制台程序也是有这种问题
https://www.cnblogs.com/huangxincheng/p/16790444.html
开发人员使用 Console.WriteLine 来输出日志,在某个时刻输出端窗口因为各种原因被他人独占,导致程序侧无法输出内容到窗口而一直被迫等待。。。
除了手动关闭“快速编辑模式”,也可以使用代码关闭“快速编辑模式”:
#region 关闭控制台 快速编辑模式、插入模式 const int STD_INPUT_HANDLE = -10; const uint ENABLE_QUICK_EDIT_MODE = 0x0040; const uint ENABLE_INSERT_MODE = 0x0020; [DllImport("kernel32.dll", SetLastError = true)] internal static extern IntPtr GetStdHandle(int hConsoleHandle); [DllImport("kernel32.dll", SetLastError = true)] internal static extern bool GetConsoleMode(IntPtr hConsoleHandle, out uint mode); [DllImport("kernel32.dll", SetLastError = true)] internal static extern bool SetConsoleMode(IntPtr hConsoleHandle, uint mode); public static void DisbleQuickEditMode() { IntPtr hStdin = GetStdHandle(STD_INPUT_HANDLE); uint mode; GetConsoleMode(hStdin, out mode); mode &= ~ENABLE_QUICK_EDIT_MODE;//移除快速编辑模式 mode &= ~ENABLE_INSERT_MODE; //移除插入模式 SetConsoleMode(hStdin, mode); } #endregion
浙公网安备 33010602011771号