【疑難雜症】c#控制檯應用程序卡輸出

Q:

控制檯程序不斷輸出文本到控制檯界面上,偶爾會有卡頓的現象

鼠標點上去會有一個白色方塊,按任意鍵又可以正常執行。

如以下代碼:

while(true){
     Console.Writeline("running");
     Thread.Sleep(1000*5);
}

A:

如果用戶意外地點擊黑色控制檯窗口,光標將變爲一個填充的白色矩形,並且應用程序將在下一個Console.Write語句中掛起,直到另一個clic被創建。

當“快速編輯模式”啓用時,它是控制檯窗口的通用功能。

爲了禁用該功能,您應該在運行時取消選中應用程序控制臺窗口的“快速編輯模式”選項

c#代碼:

// 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);

R:

參考

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章