随心网络 随心网络
关注数: 7 粉丝数: 9 发帖数: 306 关注贴吧数: 30
Delay函数疑问 多个窗体下有多个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
1 下一页