Delphi 定时器不同 Windows OS

Delphi Timer on different Windows OS

计时器设置为一秒

  procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      caption := Format('%s', [FormatDateTime('hh:nn:ss.zzz', Frac(GetTime))])
    end;

在 windows XP 和 win 8 上,我会得到每秒值正好增加一秒。在 windows 7 会更多。为什么?如何让Windows7个常数值只增加一秒?

GUI 计时器不精确,因为它们不会定期触发。他们承诺不会比您指定的时间间隔更频繁地触发。但是,它们的发射频率可能会降低。

简单的解决方案是让您的计时器启动得更快一些。你需要每秒更新一次,所以让定时器每 10Hz 触发一次,比如说。这将具有平滑 GUI 计时器的不精确性的效果。