摘要:[VB6] [VB.Net][C#.Net] 使用DoEvents時,降低CPU Loading的方法
當一個程序的代碼需要花很長的時間去執行,比如處理一筆大資料庫時,這時你需要運用DoEvents函數。DoEvents函數可以臨時返回控制器給操作系統,並允許它去觸發其他的事件。
資料出處:http://msdn.microsoft.com/zh-tw/library/bd65th41(VS.80).aspx
一直苦惱著自己開發的程式Process CPU Loading太大,上網查了一下才知道原來是DoEvents這個函數造成。DoEvents並非天下無敵,用了多了會增加負載、影響效率;雖然 DoEvents 雖然會允許VB6進行其他程序作業,但是不會把CPU資源放出來,故透過呼叫 Sleep 讓 CPU 資源得以釋出,不致以 100% 來占用系統。
經小弟測試的結果果然是降低了CPU的Loading,各位可以自己測測看!
VB6:使用DoEvents










由下圖得知,DoEventsTest.exe一下子就飆到99%了





用myDoEvents的確讓人興奮,99%變0%了,但別忘了它有sleep,run的速度是會比DoEvents慢很多的喔,自行拿捏吧,sleep的單位秒數是ms,所以sleep 1就是休息0.01 Sec
使用.Net Framework :Application.DoEvents( ) - 將cpu交付給其它應用式
+
使用.Net Framework :System.Threading.Thread.Sleep - 降低cpu loading
名稱 | 說明 |
---|---|
Thread.Sleep (Int32) | 在指定的時間內暫止目前的執行緒。 受 .NET Compact Framework 支援。 |
Thread.Sleep (TimeSpan) | 封鎖目前執行緒一段指定的時間。 |
VB.NET:










C#.NET:

















private void Form1_Load(object sender, EventArgs e)




private void button1_Click(object sender, EventArgs e)












使用.Net Framework :System.Threading.Thread( ) - 多執行緒
多執行緒與DoEvents的定義不同,故不在此篇討論中。
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET