用delphi的定时器,100mS采样定时,根据采样值画出曲线,发现与实际时间相差很多,理想情况下采10个数应该是1S,400个数应该是40S,但是经常是400个数只用了35S,或更少,最少只用了20S,这是什么原因?

解决方案 »

  1.   

    本来就不准,windows不是实时系统
      

  2.   

    Timer的确不准
    用Sleep好像误差稍微小点。。
      

  3.   

    准了就不是win了,不过,你网上可以查查高精度定时器,也许会有收获
      

  4.   

    定时器受线程影响,sleep和线程都受cpu时间片影响
    虽然知道几个高精度api,不过没做过项目,不随便发言了
      

  5.   

    Delphi 深度历险上面有一些篇幅讲了高精度定时器。
      

  6.   

    产生中断的定时器是不准,但是可以利用计算时间的计数器,这个计数器不产生中断,但是精度高
    用QueryPerformanceCounter查询这样的计数器
      

  7.   

    多线程, 然后用GetTickCount求差值试试