VB TIMER控件 为什么不精确啊,感觉差很多,有没有精确的TIMER控件啊

解决方案 »

  1.   

    因为windows的定时精度最小就是55ms,要更高精度,需要用GetTickCount
    https://blog.csdn.net/linjcai/article/details/81206143
      

  2.   

    你所谓的精确要是什么?timer只是两次timer事件的间隔时间你基本可控,但timer里面花的时间不管。这样,如果你认为你设置了timer时间就万事大吉了,那么timer事件处理时间的累积误差会越来越大。
    举个例子,你的timer每10秒触发一次,触发360次,肯定超过一个小时。
    如果你要代码尽量少地保持一个恰当的精度,要自己去检测系统时间。
    还是刚才那个例子,你要定时一个小时。那么你可以先根据当前系统时间确定好目标触发时间,并把这个目标时间写入模块变量或者静态变量。timer可以定义为每1秒触发一次,每次timer事件检查系统时间是否达到目标时间,如果没达到就退出,达到就继续你的业务逻辑。这样,一个小时候触发,误差一秒以内。如果你设置为500毫秒触发一次,那么误差就降到半秒左右。只不过你越不过55毫秒这个坎,实际上能100毫秒左右误差已经差不多是极限了。
      

  3.   

    timer方法可以