C# 延時小函數 很好用


平時我們在做winform開發的時候,有時候需要讓程序休眠幾秒鍾,但是,如果我們直接使用 thread.sleep()函數,頁面ui就會停止響應。怎么樣解決呢,你可以把頁面涉及到表現ui的代碼放到一個單線程處理,也可以采用我下面的做法,加一個小函數ok了。
測試過很好用。

public static bool Delay(int delayTime)
       {
            DateTime now = DateTime.Now;
            int s;
            do
            {
                 TimeSpan spand = DateTime.Now - now; 
                s = spand.Seconds; 
                Application.DoEvents();
            }
             while (s < delayTime);
            return true;
        }

 

也可以在線程里面休眠,然后在到主線程。

void Sleep()
       {
           Thread thr = new Thread(() =>
           {
               //這里還可以處理些比較耗時的事情。
               Thread.Sleep(1000);//休眠時間
               this.Dispatcher.Invoke(new Action(() =>
               {
                   DoSomeThing();//調用處理事件
               }));
           });
       }
       //休眠后你要做的事情
       void DoSomeThing()
       { }

 

也可以使用 await Task.Delay(20);
https://msdn.microsoft.com/en-us/library/system.threading.tasks.task.delay%28v=vs.110%29.aspx


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM