level 7
随心网络
楼主
多个窗体下有多个timer执行不同工作
Timer中调用Delay函数
函数放在通用模块下会导致延迟不准(变量值错乱)
函数放在类模块下也会导致各种问题
Form1
Dim i
Private Sub Form_Load()
Timer1.Enabled = True
Timer1.Interval = 1000
Timer2.Enabled = True
Timer2.Interval = 1234
End Sub
Private Sub Timer1_Timer()
i = i + 1
Me.Caption = i
Dim t1 As New Class1
t1.Delay 1000
End Sub
Private Sub Timer2_Timer()
i = i + 1
Me.Caption = i
Dim t2 As New Class1
t2.Delay 5000
End Sub
Module1
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare Function timeGetTime Lib "winmm.dll" () As Long
Class1
Public Sub Delay(nTime As Long)
Dim time1, time2
Debug.Print "开始延迟:" & nTime
time1 = timeGetTime
Do
Sleep 2
DoEvents
time2 = timeGetTime - time1
If time2 < 0 Then time2 = time2 + (2 ^ 32)
Loop While time2 < nTime
Debug.Print "实际延迟:" & time2
End Sub
实际测试结果两个Timer会一起结束
开始延迟:1000
开始延迟:5000
实际延迟:5000
实际延迟:5234
开始延迟:1000
开始延迟:5000
实际延迟:5001
实际延迟:5238
开始延迟:1000
开始延迟:5000
实际延迟:5000
实际延迟:5217
开始延迟:1000
开始延迟:5000
实际延迟:5000
实际延迟:5235
开始延迟:1000
开始延迟:5000
实际延迟:5001
实际延迟:5237
开始延迟:1000
开始延迟:5000
实际延迟:5001
实际延迟:5224
开始延迟:1000
开始延迟:5000
实际延迟:5000
实际延迟:5238
开始延迟:1000
开始延迟:5000
实际延迟:5000
实际延迟:5219
开始延迟:1000
开始延迟:5000
实际延迟:5000
实际延迟:5223
2018年08月26日 00点08分
1
Timer中调用Delay函数
函数放在通用模块下会导致延迟不准(变量值错乱)
函数放在类模块下也会导致各种问题
Form1
Dim i
Private Sub Form_Load()
Timer1.Enabled = True
Timer1.Interval = 1000
Timer2.Enabled = True
Timer2.Interval = 1234
End Sub
Private Sub Timer1_Timer()
i = i + 1
Me.Caption = i
Dim t1 As New Class1
t1.Delay 1000
End Sub
Private Sub Timer2_Timer()
i = i + 1
Me.Caption = i
Dim t2 As New Class1
t2.Delay 5000
End Sub
Module1
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare Function timeGetTime Lib "winmm.dll" () As Long
Class1
Public Sub Delay(nTime As Long)
Dim time1, time2
Debug.Print "开始延迟:" & nTime
time1 = timeGetTime
Do
Sleep 2
DoEvents
time2 = timeGetTime - time1
If time2 < 0 Then time2 = time2 + (2 ^ 32)
Loop While time2 < nTime
Debug.Print "实际延迟:" & time2
End Sub
实际测试结果两个Timer会一起结束
开始延迟:1000
开始延迟:5000
实际延迟:5000
实际延迟:5234
开始延迟:1000
开始延迟:5000
实际延迟:5001
实际延迟:5238
开始延迟:1000
开始延迟:5000
实际延迟:5000
实际延迟:5217
开始延迟:1000
开始延迟:5000
实际延迟:5000
实际延迟:5235
开始延迟:1000
开始延迟:5000
实际延迟:5001
实际延迟:5237
开始延迟:1000
开始延迟:5000
实际延迟:5001
实际延迟:5224
开始延迟:1000
开始延迟:5000
实际延迟:5000
实际延迟:5238
开始延迟:1000
开始延迟:5000
实际延迟:5000
实际延迟:5219
开始延迟:1000
开始延迟:5000
实际延迟:5000
实际延迟:5223