一、程序执行时间过长超过定时器时间
- Ontimer在执行时程序没有执行完,占用了主线程,settimer仍然每隔一段时间向消息队列里发送消息,但重复的消息就被去掉只保留一个,待Ontimer程序执行完立刻向Ontimer发送积攒的消息,而另一消息仍按原来时间间隔发送。
- Ontimer中的程序不执行完,不会重复发送消息重复执行。因此这个时间间隔是不准的,只有在程序Ontimer占用时间小于定时器时长,才是比较准的。
- 箭头表示程序开始执行,蓝色矩形块表示该程序块执行时间。

二、KillTimer后定时器仍在执行
- 如果程序执行时间超过了定时器时间,在此期间KillTimer,虽然中断了定时器,但仍有一个消息在队列中,若没有做好屏蔽,消息执行完会继续执行一次(我写的true和step刚好可以执行),因而造成多次执行的现象。

本文详细探讨了在程序执行时间过长超过定时器设定时间时,定时器消息发送的不准确性及其原因。同时,分析了KillTimer后定时器仍在执行的现象,并解释了其背后的原因,帮助读者理解定时器的工作机制。
3248

被折叠的 条评论
为什么被折叠?



