C#延遲執行方法函數實例講解

需求分析:

我們在做winform開發的時候,有時候需要讓程序休眠幾秒鐘,但是如果我們直接使用 Thread.Sleep()函數的話,頁面UI就會停止響應。怎麼樣解決呢,你可以把頁面涉及到表現UI的代碼放到一個單線程處理,也可以采用我面的方法,加一個小函數就ok瞭。

 if (MessageBox.Show("確定要清理嗎?", "確認", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
  this.labMsg.Text = "正在清理,請稍候...";
  ThreadPool.QueueUserWorkItem(state =>
   {
     //延遲2秒執行
     Thread.Sleep(2000);
     BeginInvoke(new Action(() =>
     {
        //這裡是實現某個功能的代碼,返回結果給UI
        string result = Clean();
        this.labMsg.Text = result;
      }));
   });      
}

也可以在線程裡面休眠,然後再到主線程:

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

到此這篇關於C#延遲執行方法函數實例講解的文章就介紹到這瞭,更多相關C#延遲執行方法函數內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: