C#延遲執(zhí)行方法函數(shù)實(shí)例講解
需求分析:
我們?cè)谧鰓inform開(kāi)發(fā)的時(shí)候,有時(shí)候需要讓程序休眠幾秒鐘,但是如果我們直接使用 Thread.Sleep()函數(shù)的話,頁(yè)面UI就會(huì)停止響應(yīng)。怎么樣解決呢,你可以把頁(yè)面涉及到表現(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-03
UnityRTS實(shí)現(xiàn)相機(jī)移動(dòng)縮放功能
這篇文章主要為大家詳細(xì)介紹了UnityRTS實(shí)現(xiàn)相機(jī)的移動(dòng)縮放功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03
Unity實(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-08
c#訪問(wèn)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問(wèn)器中使用。base關(guān)鍵字用于從派生類中訪問(wèn)基類的成員。下面學(xué)習(xí)一下這二個(gè)關(guān)鍵字的使用方法2014-01-01
Unity Shader實(shí)現(xiàn)描邊OutLine效果
這篇文章主要為大家詳細(xì)介紹了Unity Shader實(shí)現(xiàn)描邊OutLine效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01
C#中foreach原理以及模擬的實(shí)現(xiàn)
這篇文章主要介紹了C#中foreach原理以及模擬的實(shí)現(xiàn)方法,備有詳盡的注釋,便于深入理解C#原理,需要的朋友可以參考下2014-10-10

