很多初學者在寫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 輸入)