延時-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函數