复制和粘贴命令提示符会导致冻结的控制台应用程序继续

本文关键字:冻结 控制台 应用程序 继续 命令提示符 复制 | 更新日期: 2023-09-27 18:32:24

我正在使用Visual Studio和C#编写控制台应用程序。我不断将调试信息打印到控制台窗口。

该程序相当简单,它只是多次查询多个数据库并将值存储在我的中央数据库中。它总共这样做了 900 多次。在查询数据库时,它会偶尔(随机)停在控制台窗口上,并停止打印出调试信息或在程序中继续前进。奇怪的是,当我突出显示窗口并右键单击(复制)时,这似乎使程序恢复了生机,它又开始工作了!

有谁知道是什么原因造成的?这是我以前在程序中见过的最奇特的行为!

复制和粘贴命令提示符会导致冻结的控制台应用程序继续

如果用户意外单击黑色控制台窗口,光标将变为填充的白色矩形,并且应用将挂起,直到创建另一个 clic。

这是控制台窗口启用其"快速编辑模式"时的通用功能。

要禁用该功能,您应该在运行时取消选中应用控制台窗口的"快速编辑模式"选项。

或以编程方式禁用它:

// http://msdn.microsoft.com/en-us/library/ms686033(VS.85).aspx
    [DllImport("kernel32.dll")]
    public static extern bool SetConsoleMode(IntPtr hConsoleHandle, uint dwMode);
    private const uint ENABLE_EXTENDED_FLAGS = 0x0080;
    static void Main(string[] args)
    {
         IntPtr handle = Process.GetCurrentProcess().MainWindowHandle;
         SetConsoleMode(handle, ENABLE_EXTENDED_FLAGS);