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!
推薦閱讀:
- C# winform跨線程操作控件的實現
- C# 異步多線程入門到精通之ThreadPool篇
- C#-WinForm跨線程修改UI界面的示例
- C#線程委托BeginInvoke與EndInvoke的用法
- 深入學習C#多線程