乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      vb延時的幾種方法

       hdzgx 2019-10-09

      作者:iamlaosong

      1、一般延時

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

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

      雖然一般用這個函數(shù)延遲用秒做單位,但1秒以內的延時也是可以的,老一點的機器時鐘中斷為每秒18.2次,就是說時間間隔在0.055秒(55毫秒)左右,現(xiàn)在的機器一般都比這個高,具體多少需要測試。Timer函數(shù)根據(jù)時鐘中斷記錄當天的時間序列值,以秒為單位,也就是從當天0點開始到當前時間點上所經(jīng)歷的秒數(shù)(含小數(shù))。當從23:59分鐘跨越到0點是,Timer函數(shù)的時間也重新歸零開始計算。通過查看函數(shù)中的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)

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

      上面方法雖然簡單,但是有一個致命的缺陷,就是Timer函數(shù)的時間每天都是從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函數(shù),sleep函數(shù)是Windows API函數(shù),使用前必須先聲明,然后使用,例如:

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

      。。。

      sleep 1000      '延時1秒
      

      。。。

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

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

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

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

      延時函數(shù)和上面的一樣,只是將Timer函數(shù)換成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
      注意:延時時間單位是毫秒。由于延時函數(shù)中使用了 DoEvents語句交出了系統(tǒng)控制權,所以不會影響用戶的其它操作。
      這里寫圖片描述

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多