如果某个间隔为一秒的定时器在OnTimer中需要处理的时间多于一秒,那么应该会出现这段处理过程的重复执行,那么要不要考虑数据的同步呢?
---------------------------------------------------------------
WM_TIMER消息会被忽略,如果一个WM_TIMER消息正在处理,新的WM_TIMER消息不会产生,因此不存在函数重入的问题。类似的还有WM_PAINT消息。
---------------------------------------------------------------
不会重入是确定的,但WM_TIMER真的不会产生吗?我的印像中当debug ontimer时,当一次ontimer中断了一段时间(debug)再F5通过后,会连续有若干个ontimer被执行
从感觉上timer消息是被触发了的并加上了消息对列(但这个时候并没有去取这个消息,所以当然不会重入),当然,也可能是某种机制使得一个超时的ontimer结束后,立即产生一个timer消息到消息对列
---------------------------------------------------------------
同上。WM_TIMER是会产生的,不过如果多个相同WM_TIMER排在一起,会被合并。
另,WM_TIMER的优先度是最低的。
---------------------------------------------------------------
定时器的定时事件是不会累积的。即:如果规定的时间达到,而定时处理函数还没有执行,那么会从消息队列里面移除这个定时的消息的。
---------------------------------------------------------------
窗口处理程序本身都是不可重入的,也就是说当窗口处理程序在处理一个消息时,只有等它处理完后才会响应下一个消息。
WM_TIMER 消息的问题
最新推荐文章于 2024-06-23 17:14:10 发布
问题内容:关于定时器消息WM_TIMER的认识,如间隔时间多于一秒,要考虑数据的同步呢?