计时器运行的原理与大量计时器不同步问题

dingdong3211 dingdong3211 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
一个主计时器控制3个子计时器,interval均为100ms,目标是按循序print 1,2,3
点击command1后,下列代码的结果是print:2,1,3 显然不是自己想要的。

1.如果将横线处sleep 100 改为sleep 200 则正常print 1,2,3。

2.如果均不加延时,则完全随机print

在编写程序中经常需要用到大量计时器,因而也经常出现奇奇怪怪的不同步问题,总而言之,还是对timer的运行原理理解不够。

个人主观的认为:
1.不涉及外部计时器的内部指令是从上到下执行的,
2.而控制外部计时器时,则与外部计时器间隔有关,有时同步有时不同步。

恳请高手释疑

Private Sub Command1_Click()
Timer.Enabled = True
End Sub

Private Sub Timer_Timer()
Timer1.Enabled = True

DoEvents
Sleep 100 ---------------------------------------


Timer2.Enabled = True

DoEvents
Sleep 100

Timer3.Enabled = True

Timer.Enabled = False
End Sub


Private Sub Timer1_Timer()
Print "1"
Timer1.Enabled = False
End Sub

Private Sub Timer2_Timer()
Print "2"
Timer2.Enabled = False
End Sub

Private Sub Timer3_Timer()
Print "3"
Timer3.Enabled = False
End Sub
...全文

相关推荐

评论 66
收藏 已收藏
分享
返回顶部
dingdong3211
控件 1,453 成员 41,351 内容