Using timers in vc++ via SetTimer and OnTimer

本文探讨了使用SetTimer与OnTimer结合调用不同方法时遇到的问题。在一个涉及两个独立定时器的任务中,作者发现其中一个定时器的长时间处理过程会影响另一个定时器的正常触发频率。文章分析了可能的原因,并寻求解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hi . i am using SetTimer(...) combined with OnTimer(...) in my code to call 2 different methods on 2 different timers. Here's a simplified version of my code to make things clear:

 

SetTimer(1, 100, NULL);     

SetTimer(2, 40, NULL);

...

void CMTDlg::OnTimer(UINT nTimerID)

{

     if (nTimerID == 1)

     {

          //capture an image from the webcam and save it in the 'img' folder

     }

      if (nTimerID == 2)

     {

          //some processing

     }

}

 

 

Now, my assumed working of the code was this: After 100 ms timer1 gets fired,  OnTimer is called, and an image is saved in the img folder. This repeats every 100 ms. Meanwhile, after every 40 ms, timer2 gets fired, OnTimer is called, and some processing takes place. The capturing of images from the webcam is independent of the the processing in timer2, so regardless of how long that processing takes, my images will be generated every 100 ms by timer1. ie, timer1 and timer2 and mutually independent.

But thats not how its working. The processing in timer2 takes a long time, and this is affecting timer1. timer1 does not generate images every 100 ms now. But if I comment out timer2, then the timer1 generates images fine @ every 100 ms.

So my question is, what am I doing wrong and how can I fix it?

Thanks,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值