当我在控制台中选择一些区域我的UI挂起(My UI hangs when I select some

2019-11-01 23:25发布

我登录我的信息到控制台。 但我有一些有趣的效果。 当我选择在控制台中的一些消息我的UI挂起。 UI将活着的时候,我取消控制台中的所有。 我不喜欢这样的行为。

这是任何解决方案吗?

Console::WriteLine("Message");  

Answer 1:

你选择在控制台中的文本。 你可以想像,如果控制台继续输出信息,将很难选择你要选择什么,所以系统暂停可见更新。 如果你希望你的应用程序继续呈现明显的升级,停止在屏幕上选择文本。



Answer 2:

您可以在控制台编程方式禁用快速编辑模式:

class Program {
    static void Main(string[] args) {
        uint mode;
        IntPtr stdIn = GetStdHandle(STD_INPUT_HANDLE);
        if (GetConsoleMode(stdIn, out mode)) {
            if ((mode & (uint) ConsoleModes.ENABLE_QUICK_EDIT_MODE) != 0) {
                mode = mode ^ (uint) ConsoleModes.ENABLE_QUICK_EDIT_MODE;
                SetConsoleMode(stdIn, mode);
            }
        }
        int i = 0;
        while (true) {
            Thread.Sleep(300);
            Console.WriteLine(i++);
        }
    }
    const int STD_INPUT_HANDLE = -10;
    [DllImport("kernel32.dll", SetLastError = true)]
    static extern IntPtr GetStdHandle(int nStdHandle);
    [DllImport("kernel32.dll")]
    static extern bool GetConsoleMode(IntPtr hConsoleHandle, out uint lpMode);
    [DllImport("kernel32.dll")]
    static extern bool SetConsoleMode(IntPtr hConsoleHandle, uint dwMode);
    [Flags()]
    enum ConsoleModes : uint {
        ENABLE_PROCESSED_INPUT = 0x1,
        ENABLE_LINE_INPUT = 0x2,
        ENABLE_ECHO_INPUT = 0x4,
        ENABLE_WINDOW_INPUT = 0x8,
        ENABLE_MOUSE_INPUT = 0x10,
        ENABLE_INSERT_MODE = 0x20,
        ENABLE_QUICK_EDIT_MODE = 0x40,
        ENABLE_EXTENDED_FLAGS = 0x80,
        ENABLE_AUTO_POSITION = 0x100,
    }
}


Answer 3:

这不是特定于应用程序,它的“功能”,所有控制台应用程序的存在。 当选择文本 - 整个应用程序挂起。 这种行为无法改变。



文章来源: My UI hangs when I select some area in the console