日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

vb延時的幾種方法

 hdzgx 2019-10-09

作者:iamlaosong

1、一般延時

一個應用接口需要限制運行速度,需要在循環(huán)中加個延時函數,這個延時不需要多么精確,要求有個幾秒延時,網上用的比較多的就是用Timer函數編寫,Timer是VBA自帶的函數,用起來比較方便,一般程序如下:

‘延時程序
Sub delay(T As Single)
Dim time1 As Single
time1 = Timer
Do
DoEvents
Loop While Timer - time1 < T
End Sub

雖然一般用這個函數延遲用秒做單位,但1秒以內的延時也是可以的,老一點的機器時鐘中斷為每秒18.2次,就是說時間間隔在0.055秒(55毫秒)左右,現在的機器一般都比這個高,具體多少需要測試。Timer函數根據時鐘中斷記錄當天的時間序列值,以秒為單位,也就是從當天0點開始到當前時間點上所經歷的秒數(含小數)。當從23:59分鐘跨越到0點是,Timer函數的時間也重新歸零開始計算。通過查看函數中的timer值得變化情況,可以確定時鐘中斷的間隔。例如本人的機器timer值變化如下:

56742.09
56742.11
56742.13
56742.14
56742.16
56742.16
56742.17
56742.19
56742.2
56742.22
56742.23
可以看出,時間間隔在10-20毫秒之間(精確顯示實際精度是0.015625秒,15.625毫秒)。如果時延在1秒以內,精度要求不高,就可以用這個方法,如:

delay(0.25)

由于延時函數中使用了 DoEvents語句交出了系統(tǒng)控制權,所以不會影響用戶的其它操作。

上面方法雖然簡單,但是有一個致命的缺陷,就是Timer函數的時間每天都是從0開始,如果從23:59:59開始延時1秒以上的話,這個延時程序將永遠執(zhí)行下去,下面的延時程序將彌補這個缺陷:

‘延時程序
Sub delay(T As Single)
Dim time1, time2 As Single
time1 = Timer
Do
DoEvents
time2 = Timer - time1
If time2 < 0 Then time2 = time2 + 86400 ‘86400=24*3600
Loop While time2 < T
End Sub

2、精確延時

精確延時可以使用sleep函數,sleep函數是Windows API函數,使用前必須先聲明,然后使用,例如:

private Declare Sub Sleep Lib “kernel32” Alias “Sleep” (ByVal dwMilliseconds As Long)

。。。

sleep 1000      '延時1秒

。。。

sleep函數延時是毫秒級的,精確度比較高,但它在延時時會將程序掛起,使操作系統(tǒng)暫時無法響應用戶操作,所以在長延時的時候不適合使用它。

3、使用timeGetTime函數進行延時
更好的辦法是使用timeGetTime函數,timeGetTime函數返回的是開機到現在的毫秒數,可以支持1毫秒的間隔時間,而且永遠增加,不存在回頭的問題。當然不是永遠不回頭,畢竟Long型變量(雙字,4字節(jié))也是有取值范圍的,這個值在0到2^32之間。大約49.71天。

同sleep函數一樣,timeGetTime函數是Windows API函數,使用前必須先聲明,即:

Private Declare Function timeGetTime Lib “winmm.dll” () As Long

延時函數和上面的一樣,只是將Timer函數換成timeGetTime:

‘精確延時程序
Sub delay(T As Long)
Dim time1 As Long
time1 = timeGetTime
Do
DoEvents
Loop While timeGetTime - time1 < T
End Sub
delay(1000) ‘ delay time for 1 ms
注意:延時時間單位是毫秒。由于延時函數中使用了 DoEvents語句交出了系統(tǒng)控制權,所以不會影響用戶的其它操作。
這里寫圖片描述

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多