我一直都在使用SLEEP 不过这个看上去不错有谁可以注释下吗 Dim TimeBegin As Date TimeBegin = Now() Do DoEvents Loop Until DateDiff("S", TimeBegin, Now()) > 3 MsgBox "三秒过去了"
给个用Timer控件的代码实例: Private Sub Command1_Click() Timer1.Enabled = True End SubPrivate Sub Form_Load() Timer1.Interval = 1000 Timer1.Enabled = False End SubPrivate Sub Timer1_Timer() Static sum As Integer sum = sum + 1 If sum = 1 Then 'A Sub ElseIf sum = 3 Then 'B Sub Timer1.Enabled = False sum = 0 End If End Sub
Public Declare Function GetTickCount Lib "kernel32" () As Long Public Sub delay(dTime As Double)‘已秒为单位,延时10秒只需要将dTime设置为10即可 Dim dStart As Double dStart = GetTickCount \ 1000 Do While dStart > GetTickCount \ 1000 - dTime DoEvents Loop End Sub 调用该过程就能达到延时作用。
DoEvents
Loop不过,上面的代码在跨午夜时可能挂起。要做些处理。
很简单,把界面和你要挂起的部分分放在两个线程里。
VB实现多线程有些困难,可以用VC来编程。
doevents
loop timer-t<3
doevents
loop while timer-t <3
TimeBegin = Now()
Do
DoEvents
Loop Until DateDiff("S", TimeBegin, Now()) > 3
MsgBox "三秒过去了"
Dim TimeBegin As Date
TimeBegin = Now()
Do
DoEvents
Loop Until DateDiff("S", TimeBegin, Now()) > 3
MsgBox "三秒过去了"
Private Sub Command1_Click()
Timer1.Enabled = True
End SubPrivate Sub Form_Load()
Timer1.Interval = 1000
Timer1.Enabled = False
End SubPrivate Sub Timer1_Timer()
Static sum As Integer
sum = sum + 1
If sum = 1 Then
'A Sub
ElseIf sum = 3 Then
'B Sub
Timer1.Enabled = False
sum = 0
End If
End Sub
Public Sub delay(dTime As Double)‘已秒为单位,延时10秒只需要将dTime设置为10即可
Dim dStart As Double
dStart = GetTickCount \ 1000
Do While dStart > GetTickCount \ 1000 - dTime
DoEvents
Loop
End Sub
调用该过程就能达到延时作用。