计时器运行的原理与大量计时器不同步问题
一个主计时器控制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
点击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
...全文
相关推荐
刷新计时器(模拟)
用按钮模拟刷新操作。需要的自行放到项目即可。
VBA计时器示例
VBA程序运行中,你可能需要自动执行某些代码或者定时执行某些计划任务,如自动保存,自动刷新,自动提示等。这就要使用定时器来完成。
Java计时器
一个简易的Java计时器,可以试着去做一做
setInterval计时器不准的问题解决方法
在js中如果打算使用setInterval进行倒数,计时等功能,往往是不准确的,因为setInterval的回调函数并不是到时后立即执行,而是等系统计算资源空闲下来后才会执行.而下一次触发时间则是在setInterval回调函数执行完毕之后才开始计时,所以如果setInterval内执行的计算过于耗时,或者有其他耗时任务在执行,setInterval的计时会越来越不准,延迟很厉害. 下面的代码可以说明这个问题 代码如下: var startTime = new Date().getTime(); var count = 0; //耗时任务 setInterval(function(){ va
pytimers:python计时器库
Python计时器库。 当前支持以下模块的计时器库 heap -非常高效的计时器堆计时器。 使用单个基于python线程的计时器,支持数千个计时器。 主分支状态:


控件
