我定义了两个定时器,用time1和time2表示,time1间隔60秒,time2间隔40秒,
如果time1的响应函数还没有执行完,而time2的时间到了的话,是否会响应time2的消息呢?
这时程序怎么执行呢?接下来两个定时器怎么计时呢???
谢谢!

解决方案 »

  1.   

    各自计时啊!
    if(nIDEvent==1)
    { }
    if(nIDEvent==2)
    { }
      

  2.   

    需要定义不同的ONTIMER函数,在SetTimer时传进去。
      

  3.   

    我觉得如果在前一个OnTimer执行结束之前有新的WM_TIMER消息的话,这些后来的消息会合成一条,直到定时器函数执行结束。如果是两个定时器的话,相同ID的定时器合成一个吧。毕竟是低优先级的消息。最好还是像楼上朋友说的,用不同的处理函数,在SetTimer时传进去吧
      

  4.   

    首先要明确的一点是你的timer1和timer2是不是在同一个线程里。1.在同一个线程里:
    永远不可能同时响应2个OnTimer消息,这时如果在执行timer1的时候timer2的时间到了,系统只是把timer2的消息插入到消息队列里,但timer1肯定会先执行完才有可能响应timer2的消息处理。2.在不同的线程里:
    这个时候就有可能timer1还在处理的时候,timer1所在线程的时间片用完,转去执行timer2所在的线程。处理方法就是线程同步的问题了。可以利用关键代码段、事件、互斥体、信标等方法同步线程。