SetTimer(1,20,NULL);
如果OnTimer中的语句在20毫秒内执行不完,
这个时候下一个定时又来了,会出现什么情况?
如果OnTimer中的语句在20毫秒内执行不完,
这个时候下一个定时又来了,会出现什么情况?
解决方案 »
- 纠结中........
- 300万条数据如何插入到CListBox不闪屏,求解!
- 这个对话框从哪里弹出来的?
- 再问ado两次连接数据库的问题
- 请串口通讯高手帮忙
- CRC出错的packet能截获吗?
- 如何用DIRECT SOUND实现:播放一段声音?
- 网络能否发送二进制码和ASC2码混合的数据
- 求助:CTypedPtrArray<class CObArray,class CPoint *> : no copy constructor available
- 《windows网络编程技术》第8章中介绍了5个模型,在结尾说服务器端最好用重叠io或完成io,客户端最好用...都没有提到select模型,是不是selec模型较落后不用去学了可以跳过不看?请过来人给些意见,谢谢!
- VC赋值问题
- 用softIDE调试.DLL,如何才能调出编译.DLL的原代码进行调试???!!!
如果ontimer里面用到了什么资源可能就会造成资源冲突
现在的现象好像是,如果OnTimer处理函数用的时间太长,比如超过20毫秒,下一次就不会处理。
OnTimer()
{
nnnn++;
TRACE("%d",nnnn);
}
如果OnTimer中只有这两句,可以看在在大约1秒中的时间中,nnnn增加到了50多,
但是如果在TRACE后面加上其他语句(读写AD卡,数据处理,图形显示)后,
nnnn的值就明显小于预期。
我现在不敢肯定,希望大家有经验的给个确切答案。
{
KillTimer(nIDEvent);//先关掉
.........//处理 SetTimer(nIDEvent,20,NULL);//重新开始
}...........
至于OnTimer()函数,Window的消息机制本生会控制它同步的。
你不去管消息筐,你会发现这个消息框会原来越多,说明什么问题呢?:)
另外你也可以作个试验,会发现omtimer函数没有处理完是不会处理其他的比如按钮消息等,
这个原因我想是由于在硬件层时钟中断级别高于软件中断的缘故吧
你在Ontimer调用MessageBox时消息框之所以会不断的弹出来,并不能说明窗口能同时处理多个Timer消息,而是因为你在弹出一个消息框以后,消息框本身又是一个窗口,也就是说接下来的时间消息其实是你弹出来的哪个对话框在处理. 在一个消息线程,不管什么消息处理函数,在没有处理完之前都不会去处理其他的消息.
你可以定义一个全局变量, 在OnTimer中加一,然后当变两等于的时候就退出程序,
再在Ontimer中写一个死循环,看看程序是否会退出
你可以定义一个全局变量, 在OnTimer中加一,然后当变量等于2的时候就退出程序,
再在Ontimer中写一个死循环,看看程序是否会退出