我作的一个程序需要不停的工作(每隔30秒采样一次),可使用了Timer后发现过几天采样频率就不对了(根本达不到要求),怎么回事?采样不严格要求30秒,但是也不能到每隔几分钟采一次呀?听说OnTimer由响应次数的要求,是这样吗?

解决方案 »

  1.   

    绝对没有(到目前我还没听说过)
    它的Enabled一直是True吧?要不就是别的地方有问题!
      

  2.   

    当然不行了。TIMER不准!哈,这样,你看看DELPHI深度历险吧,那里有,我看过,不过一句两句说不清,它上面写了一章呢!!
      

  3.   

    当到了触发本次OnTimer事件时,系统要空闲才行,如果上次的OnTimer还没有处理完,这次就不能正常的触发了!
      

  4.   

    这个很简单的,像要时间精确,绝对不能用timer,可以使用GetTickCount()函数和timeGetTime(),这两个在游戏程序中广泛使用,都比较精确。相比之下,timeGetTime()更精确。可以使用这样的格式:
    var
      timeLast: DWORD;  if timeGetTime() - timeLast > [某毫秒] then
      begin
        //你要定时做的事情
        timeLast := timeGetTime();
      end;把这段代码放在一个持续的循环中就行了,timeGetTime()
      

  5.   

    对了,无天兄说得很对,我们的timmer从来没有时间很近的去触发,而且timmer事件只有在系统空闲的时候才会触发,否则会失效的!我们一般控制每天的几点,所以没有搂住的问题,建议搂住换别的方法!或者用线程处理,这样就不存在系统占用的问题和系统空闲的等待了!