| 发表于:2007-05-17 09:08:134楼 得分:20 |
如果真要及时处理,对vb单线程来说,只好用 do while 1 loop 中间取延时代码参照下面 option explicit declare function queryperformancecounter lib "kernel32 " _ (x as currency) as boolean declare function queryperformancefrequency lib "kernel32 " _ (x as currency) as boolean declare function gettickcount lib "kernel32 " () as long declare function timegettime lib "winmm.dll " () as long sub test_timers() dim ctr1 as currency, ctr2 as currency, freq as currency dim count1 as long, count2 as long, loops as long ' ' time queryperformancecounter ' if queryperformancecounter(ctr1) then queryperformancecounter ctr2 debug.print "start value: "; format$(ctr1, "0.0000 ") debug.print "end value: "; format$(ctr2, "0.0000 ") queryperformancefrequency freq debug.print "queryperformancecounter minimum resolution: 1/ " & _ freq * 10000; " sec " debug.print "api overhead: "; (ctr2 - ctr1) / freq; "seconds " else debug.print "high-resolution counter not supported. " end if ' ' time gettickcount ' debug.print loops = 0 count1 = gettickcount() do count2 = gettickcount() loops = loops + 1 loop until count1 <> count2 debug.print "gettickcount minimum resolution: "; _ (count2 - count1); "ms " debug.print "took "; loops; "loops " ' ' time timegettime ' debug.print loops = 0 count1 = timegettime() do count2 = timegettime() loops = loops + 1 loop until count1 <> count2 debug.print "timegettime minimum resolution: "; _ (count2 - count1); "ms " debug.print "took "; loops; "loops " end sub | | |
|