c#判斷代碼是否執(zhí)行超時(shí)的幾種方式總結(jié)
更新時(shí)間:2023年01月24日 14:22:33 作者:以有崖求無崖
這篇文章主要介紹了c#判斷代碼是否執(zhí)行超時(shí)的幾種方式總結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
c#判斷代碼是否執(zhí)行超時(shí)
一、使用委托
delegate void dg(); dg dgCase; void method() { ? ? ?dgCase = () => ? ? ?{ ? ? ? ? ? Thread.Sleep(10000); ? ? ? ? ? MessageBox.Show("代碼執(zhí)行完畢!"); ? ? ?}; ? ? ?WaitHandle wh = dgCase.BeginInvoke(null, null).AsyncWaitHandle; ? ? ?if (!wh.WaitOne(3000)) ? ? ?{ ? ? ? ? ? MessageBox.Show("執(zhí)行已過了3秒!"); ? ? ?} ? ? ?return; }
二、使用Task
Task t = new Task(() => { ? ? ?Thread.Sleep(10000); ? ? ?MessageBox.Show("代碼執(zhí)行完畢!"); }); t.Start(); if(!t.Wait(3000)) { ? ? ?MessageBox.Show("執(zhí)行已過了3秒!"); } return;
三、使用Timer
void method() { ? ? ?System.Timers.Timer time = new System.Timers.Timer(3000) { Enabled = true }; ? ? ?time.Elapsed += (x, j) => ? ? ?{ ? ? ? ? ? MessageBox.Show("執(zhí)行已過了3秒!"); ? ? ? ? ? time.Stop(); ? ? ?}; ? ? ?Thread.Sleep(10000); ? ? ?MessageBox.Show("代碼執(zhí)行完畢!"); ? ? ?time.Stop(); ? ? ?return; }
四、使用Thread
void ThreadMethod() { ? ? ?Thread t = new Thread(()=> ? ? ?{ ? ? ? ? ? Thread.Sleep(10000); ? ? ? ? ? MessageBox.Show("代碼執(zhí)行完畢!"); ? ? ?}); ? ? ?t.Start(); ? ? ?bool isOver = t.Join(3000); ? ? ?if(!isOver) ? ? ?{ ? ? ? ? ? MessageBox.Show("執(zhí)行已過了3秒!"); ? ? ?} }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于C#中GUI編程的標(biāo)準(zhǔn)事件問題
這篇文章主要介紹了C#中GUI編程的標(biāo)準(zhǔn)事件,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01Unity游戲開發(fā)之2048游戲的實(shí)現(xiàn)
2048是一款數(shù)字益智游戲,初始數(shù)字則是由2+2組成的基數(shù)4。在操作方面的不同則表現(xiàn)為一步一格的移動(dòng),變成更為爽快的一次到底。相同數(shù)字的方?jīng)r在靠攏、相撞時(shí)會相加。本文將通過Unity3D實(shí)現(xiàn)這一游戲,需要的可以參考一下2022-03-03C#調(diào)用Windows的API實(shí)現(xiàn)窗體動(dòng)畫
在VF、VB、PB的應(yīng)用中,有些無法通過語言工具本身來完成的或者做得不理想的功能,我們會考慮通過Windows的API來完成。本文就來通過調(diào)用Windows的API實(shí)現(xiàn)窗體動(dòng)畫,感興趣的可以嘗試一下2022-11-11C#中DataSet,DataTable,DataView的區(qū)別與用法
這篇文章介紹了C#中DataSet,DataTable,DataView的區(qū)別與用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05Unity使用EzySlice實(shí)現(xiàn)模型多邊形順序切割
這篇文章主要為大家詳細(xì)介紹了Unity使用EzySlice實(shí)現(xiàn)模型多邊形順序切割,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07