用time 控件,基本上不行。!如果在线程中用sleep,无法保存sleep之前的过程的时间执行长度 !还有哪一些呢?精准在100毫秒以内。

解决方案 »

  1.   

    API函数QueryPerformanceFrequency和QueryPerformanceCounter 
      

  2.   

    timer可以控制在100毫秒之内。
      

  3.   

    sleep什么时候成定时器了? 
      

  4.   

    delphiX 组件带有高速TImer控件,可以试试
    http://www.micrel.cz/Dx/
      

  5.   

    1 、API函数QueryPerformanceFrequency和QueryPerformanceCounter  
          这个如果是取CPU的周期来计算的,那是相当耗,CPU占用率会升得很高。
    2、SLEEP为什么不能当作定时用,在线程里,定时延时一定长度的时间,不也一样吗?
    3、time事件,如果在100毫秒之内,去取值的,取出来的now中的毫秒值,与一笔相差不止100。很不准。
         而且,如果在主进程中这时也有执行某个过程的话,这时候的time就更不准了。
    4、高速TImer,还有cnpack里也有一个,是不是也是采用计算CPU周期的。。如果是的话,也是占用CPU的。
    谢谢大家,请再。帮忙
      

  6.   

    // 延时函数,MSecs单位为毫秒(千分之1秒)
    procedure Delay(MSecs: Longint);
    var
      FirstTickCount, Now: Longint;
    begin
      FirstTickCount := GetTickCount();
      repeat
        Application.ProcessMessages;
        Now := GetTickCount();
      until (Now - FirstTickCount >= MSecs) or (Now < FirstTickCount);
    end;
      

  7.   

    GetTickCount();
    这个也是取CPU周期的,非常占用CPU的。是不是只能用这一类的。。
      

  8.   

    GetTickCount
      这个相当占用CPU的。
      

  9.   

    MMSystem.timeSetEvent函数,可以设置一个精度相对高得多的定时器