打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SetTimer, 用OnTimer会丢失定时消息,但是用回调不会丢失,为什么?



用例子说明:
EVC4中创建一个对话框工程,一个按钮按下,执行如下代码:
::SetTimer( 0, 1, 1000, NULL );
::SetTimer( 0, 2, 1000, NULL );
即设置2个定时器,间隔都是1000ms

然后在OnTimer中如下处理:
switch( nIDEvent )
{
case 1:
::OutputDebugStringW( L"1" );
case 2:
::OutputDebugStringW( L"2" );
default:
;
}
在WinCE.Net测试时发现,只打印"2"

但如果使用回调,即按钮按下执行:
::SetTimer( 0, 1, 1000, (TIMERPROC)Tm1 );
::SetTimer( 0, 2, 1000, (TIMERPROC)Tm2 );

在回调函数Tm1和Tm2中也输出"1"和"2"
在WinCE测试,发现"1"和"2"都有输出


这说明什么问题呢? 是不是说,OnTimer消息处理,定时器消息会丢失,如果同一时刻有几个定时器消息同时到达的话,旧的被新的覆盖了;
如果使用回调,就不会丢失

但是,对于系统来说,定时器时间到后,都是给进程发消息的,不管进程中使用的是OnTimer处理还是回调处理
如果是这样,就是说进程内处理定时器消息时,回调处理不会丢失,使用窗口的消息处理函数(即OnTimer方式)会丢失
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VS2010/MFC编程入门之四十四(MFC常用类:定时器Timer)
Windows WM_TIMER消息
设置多个定时器
用实例学习Ontimer和SetTimer
VC中定时器的使用_VC技术文章_VC_软件编程
settimer,ontimer,killtimer功能
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服