VB中DoEvents的注意事項

2021-04-26 18:33:05 字數 945 閱讀 1807

對與再大迴圈裡 加入   doevents卻是可以使應用程式響應其他程式,但是 doevents 也會很大程度上影響迴圈的速度,所以一般情況我這樣用

if getinputstate then doevents

雖然多了個判斷語句,但速度上確快了很多

比較以下****就知道了速度的差別

private declare function getinputstate lib "user32" () as long

private declare function gettickcount lib "kernel32" () as long

private sub command1_click()

dim s as long

s = gettickcount

for i = 1 to 1000000

doevents

next

msgbox gettickcount - s

end sub

private sub command2_click()

dim s as long

s = gettickcount

for i = 1 to 1000000

if getinputstate then doevents

next

msgbox gettickcount - s

end sub

以上情況五次測試結果分別為:

command1 : 5398 , 4852 , 4820 , 6318 , 5428

command2 : 203 , 202 , 203 ,  203 , 203

測試環境:win vista u版 + vb6 ( 2.5g 記憶體 + amd 雙核 1.7g )

呵呵,以此測試結果, 根據有沒有 採用 getinputstate api 的 doevents 時間差很大噢~~

VB中DoEvents的用途

暫時掛起當前任務,轉而完成佇列中等待的任務後,再返回當前任務 比如 如果不用此語句,在你的迴圈中可能導致你離開視窗處理其它任務 程式 會非常的慢,而用此語句之後,會根據佇列中等待的任務狀態進行處理,盡可能不影響你程式執行中做其它的工作。轉移到下乙個控制項進行事件響應時,例如,窗體解除安裝,即將列印,...

VC中類似VB的DoEvents函式

在乙個程式中,如果有乙個耗時很長的程式段 比如說乙個100萬次的迴圈 程式在執行這段程式時會象死掉一樣。vb中提供doevents函式來解決這個問題。對於vc 來說,除了用多執行緒,還可以用下面的函式,起到類似於doevents的功能 bool checkmessagequeue return tr...

vb中DoEvents是什麼意思

private sub command2 click picture1.autosize true do xx rnd picture2.width yy rnd picture2.height picture2.paintpicture picture1.picture,xx,yy,picture...