天天看點

[C#.net]使用Thread.Sleep界面卡死的問題解決方法

很多初學者在寫C#程式的時候,需要程式等待某個時間,但是又不想用比較繁瑣的線程等操作,是以用Thread.Sleep()函數,但是這個函數在等待過程中會操作界面的卡死,那麼,如何能保證既不卡死又能達到等待的功能呢?其實也很簡單,用下面的一段代碼代替Thread.Sleep()函數即可。

#region 毫秒延時 界面不會卡死
        public static void Delay(int mm)
        {
            DateTime current = DateTime.Now;
            while (current.AddMilliseconds(mm) > DateTime.Now)
            {
                Application.DoEvents();
            }
            return;
        }
        #endregion      

Application.DoEvents()的作用:處理所有的目前在消息隊列中的Windows消息

其實doEnvents很簡單,就是暫停一下目前子產品Code,好讓你程式可以響應其它事件、消息……   

響應完其它事之後又回去繼續執行剛才的Code  (允許窗體在忙時響應 UI 輸入)

但是會影響目前代碼的執行效率!!!