C#延遲執(zhí)行方法函數(shù)實(shí)例講解
需求分析:
我們在做winform開發(fā)的時(shí)候,有時(shí)候需要讓程序休眠幾秒鐘,但是如果我們直接使用 Thread.Sleep()函數(shù)的話,頁面UI就會(huì)停止響應(yīng)。怎么樣解決呢,你可以把頁面涉及到表現(xiàn)UI的代碼放到一個(gè)單線程處理,也可以采用我面的方法,加一個(gè)小函數(shù)就ok了。
if (MessageBox.Show("確定要清理嗎?", "確認(rèn)", MessageBoxButtons.YesNo) == DialogResult.Yes) { this.labMsg.Text = "正在清理,請(qǐng)稍候..."; ThreadPool.QueueUserWorkItem(state => { //延遲2秒執(zhí)行 Thread.Sleep(2000); BeginInvoke(new Action(() => { //這里是實(shí)現(xiàn)某個(gè)功能的代碼,返回結(jié)果給UI string result = Clean(); this.labMsg.Text = result; })); }); }
也可以在線程里面休眠,然后再到主線程:
void Sleep() { Thread sub = new Thread(() => { //這里還可以處理些比較耗時(shí)的事情 Thread.Sleep(1000);//休眠時(shí)間 this.Dispatcher.Invoke(new Action(() => { DoSomeThing();//調(diào)用處理事件 })); }); } //休眠后你要做的事情 void DoSomeThing() { }
到此這篇關(guān)于C#延遲執(zhí)行方法函數(shù)實(shí)例講解的文章就介紹到這了,更多相關(guān)C#延遲執(zhí)行方法函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#以流方式讀socket超時(shí)設(shè)置的實(shí)例
這篇文章主要為大家詳細(xì)介紹了C#以流方式讀socket超時(shí)設(shè)置的實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03UnityRTS實(shí)現(xiàn)相機(jī)移動(dòng)縮放功能
這篇文章主要為大家詳細(xì)介紹了UnityRTS實(shí)現(xiàn)相機(jī)的移動(dòng)縮放功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03Unity實(shí)現(xiàn)仿3D輪轉(zhuǎn)圖效果
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)仿3D輪轉(zhuǎn)圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01.NET實(shí)現(xiàn)父窗體關(guān)閉而不影響子窗體的方法
這篇文章主要介紹了.NET實(shí)現(xiàn)父窗體關(guān)閉而不影響子窗體的方法,很實(shí)用的功能,需要的朋友可以參考下2014-08-08c#訪問this關(guān)鍵字和base關(guān)鍵字示例
this關(guān)鍵字引用類的當(dāng)前實(shí)例。靜態(tài)成員方法中不能使用this關(guān)鍵字,this關(guān)鍵字只能在實(shí)例構(gòu)造函數(shù)、實(shí)例方法或?qū)嵗L問器中使用。base關(guān)鍵字用于從派生類中訪問基類的成員。下面學(xué)習(xí)一下這二個(gè)關(guān)鍵字的使用方法2014-01-01Unity Shader實(shí)現(xiàn)描邊OutLine效果
這篇文章主要為大家詳細(xì)介紹了Unity Shader實(shí)現(xiàn)描邊OutLine效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01C#中foreach原理以及模擬的實(shí)現(xiàn)
這篇文章主要介紹了C#中foreach原理以及模擬的實(shí)現(xiàn)方法,備有詳盡的注釋,便于深入理解C#原理,需要的朋友可以參考下2014-10-10