VB中延時功能與Sleep函數

 

延時-Sleep函數,主要功能就是使當前線程等待一段時間,用法就是“Sleep 毫秒數”,這裏的毫秒數可以設置成任意整型數據。如 Sleep 1000,表示延時1秒(1000毫秒)。

Sleep與DoEvents之間是有點區別的。DoEvents其實是將CPU的控制權交出去,是爲了在長循環中進程佔據全部CPU資源,也就是相當於一種事件,網上有這樣的說法:DoEvents就是把機會讓給別的事件,自己暫時休息一下,但是佔着的位置不會空出來。在死循環裏放個DoEvents,CPU佔用率是100%,同時這個進程還是可以做別的事情的。而Sleep前面也講過了,就是使當前線程等待一段時間的,英文單詞表面上理解也可以理解成“睡覺”的意思,也就是什麼都不做了,也不會佔着CPU資源的,當然進程也是什麼事都不幹的。

舉個小例子:

Dim a As Integer
Dim b As Integer
Dim i As Integer
a=Text1.Text
b=Text2.Text
If a<>b Then
For i = 1 To 30
            PlaySound App.Path & /music.mid '這裏的PlaySound是一個函數,由於與本主題無關,不寫出來了。
            Sleep 1000 '延時1秒
        Next
End If

這就是一個簡單的延時程序示例,用到了Sleep函數。(其實這時是變相的使用Sleep函數,可以實現音樂的循環播放,當然音樂的長度要跟延時長度有關,要不然可能效果不好)當然我們也可以用一個循環語句來實現Sleep函數功能,如下:

Sub wait(i As Integer)
Dim s As Integer
Dim j As Integer
Dim k As Integer
For j = 0 To i
     For k = 0 To 1000
         s = s
     Next k
Next j
End Sub
在調用的時候直接寫上wait(1000)就可以實現與Sleep函數差不多的功能了,當然,可能在某種程度上來說,這個函數的效率並沒有Sleep函數強,但也值得一用。

忘記了,補上API聲明,要不然無法使用。

Private Declare Sub Sleep Lib Kernel32 (ByVal dwMilliseconds As Long) '-----Sleep函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章