有两个timer,若不幸两者的定时事件设在同一时间,则实际运行只有一个timer的事件触发了;我想知道能否(如何)让两个timer的事件都执行,在同一时间?

解决方案 »

  1.   

    首先,你要弄清楚一个概念.就是这2个timer其实都是在主线程的,他们是顺序执行的,不可能出现并发的情况。就是说,他们一定有先后,timer的事件是通过消息来完成,他会把实践的消息放入消息队列,然后等在主线程完成,只有处理完了一个Timer的事件,主线程才能处理第二个事件。你要显示的并发结果只能通过多线程来完成。
      

  2.   

    微观里,电脑不是并行工作的,除非是多CPU!
      

  3.   

    同意pazee(耙子)所说,
    建议用RegisterWaitForSingleObject函数来完成你的目的
      

  4.   

    将两个事件,写在一个timer里面不是就同时执行了吗
      

  5.   

    多线程,或者将两个ttimer时间差设为一毫秒或更少,一个timer里处理两个事件不知安全性如何,如果上一过程意外终止,第二个过程也不能运行了,有待验证...抛砖引玉
      

  6.   

    在delphi里两个定时器肯定触发两次事件,如果只触发一次说明程序有问题。
      

  7.   

    同意  pazee(耙子)做线程才能真正解决问题,定时器是不能真正准时运行的,
    它是在主线程中运行的,
    通过定时器消息来工作如果第一个定时器过程运行时间太长,
    那第二个定时器就不能准时运行了的
      

  8.   

    楼上的错了,
    TTimer是不可靠的,
    如果时间设置得太短如小于10ms,
    而OnTimer事件的代码花的时间较长如超过10ms,
    则系统会丢弃一些消息!
    要解决本问题最好还是用多线程!
      

  9.   

    TTimer用来记时是不明智的。因为TTimer精度很差的。
      

  10.   

    TTIMER只能用来作不精确的计时
      

  11.   

    诸位起得真早,或者睡得太晚。感谢你们提供的思路,让我一来就看到这么多回复,尤其是 pazee(耙子) ,让大家感到“英雄所见略同”!我没有做过多线程的东西,你们可否简要地描述一下作法?当然我自己也会去搜帖子。