對與再大迴圈裡 加入 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...