我的程序里有多个要定时执行的函数,听说SetTimer不是十分可靠,当OnTimer函数还没有返回的时候,其它的WM_TIMER消息就会丢失,是这样的吗?
如果是的话,我该怎么设计?
还有,使用OnTimer消息处理函数和自己定义的回调函数有什么区别?
如果是的话,我该怎么设计?
还有,使用OnTimer消息处理函数和自己定义的回调函数有什么区别?
解决方案 »
- 在VC中用CSocket的Send和Receive函数怎么样来发送和接收数据集_RecordsetPtr
- 知道一个ListView的句柄,如何模拟双击其中一个Item
- 请问大家,在VC中如何实现屏蔽系统的提示框?
- 关于向另一个窗口发送鼠标消息的问题,请高手指点!
- 请问那里能找到从mpeg和avi分离出每帧的图片(bmp或者jpg)以及声音(wav)的源代码?
- 怎么把媒体播放的文件名添加到列表框中?求指点!
- 给语言之争消消火
- 如何在VC中实现 对象 的移动(从一主机移动到另一主机),有人做过么?
- VC中,如何在DLL工程和DLL测试工程中建立Depends关系?并能在测试工程中跟进Dll中去。一定给分!
- 这个星号(*)怎么干掉?
- 请问,如何使用winsock发送一个FIN ACK?
- 08编译的DLL不能在VS2010上调用?
SetTimer(2,60000,NULL); //一分钟执行一次
SetTimer(3,3600000,NULL); //一小时行一次
void CDlg_Test::OnTimer(UINT_PTR nIDEvent)
{
if(nIDEvent==1) { KillTimer(1); test1(); } //只执行一次
if(nIDEvent==2) { if(!run) KillTimer(2); test2(); } //run为false终止执行
if(nIDEvent==3) { test3(); } //始终执行
CDialogEx::OnTimer(nIDEvent);
}
SetTimer() 本身,其实也是使用了一个回调函数来通知计时器。
2,你是指的在一个线程中用死循环,然后sleep一定时间吗?
SetTimer时间到了以后,发送消息到线程的消息队列,
线程中只有一个消息处理完成后,后面的消息才会得到处理