2
0

testtimer.pp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. {$mode objfpc}
  2. {$H+}
  3. program testtimer;
  4. uses
  5. {$ifdef unix}
  6. cthreads,
  7. {$endif}
  8. sysutils,classes,custapp,fptimer;
  9. Type
  10. TTestTimerApp = Class(TCustomApplication)
  11. Private
  12. FTimer : TFPTimer;
  13. FCount : Integer;
  14. FTick : Integer;
  15. N : TDateTime;
  16. Public
  17. Procedure DoRun; override;
  18. Procedure DoTick(Sender : TObject);
  19. end;
  20. Procedure TTestTimerApp.DoRun;
  21. begin
  22. FTimer:=TFPTimer.Create(Self);
  23. FTimer.Interval:=100;
  24. FTimer.OnTimer:=@DoTick;
  25. FTimer.Enabled:=True;
  26. Try
  27. FTick:=0;
  28. FCount:=0;
  29. N:=Now;
  30. While (FCount<10) do
  31. begin
  32. Inc(FTick);
  33. Sleep(1);
  34. CheckSynchronize; // Needed, because we are not running in a GUI loop.
  35. end;
  36. Finally
  37. FTimer.Enabled:=False;
  38. FreeAndNil(FTimer);
  39. end;
  40. Terminate;
  41. end;
  42. Procedure TTestTimerApp.DoTick(Sender : TObject);
  43. Var
  44. D : TDateTime;
  45. begin
  46. Inc(FCount);
  47. D:=Now-N;
  48. Writeln('Received timer event ',FCount,' after ',FTick,' ticks. (Elapsed time: ',FormatDateTime('ss.zzz',D),')');
  49. FTick:=0;
  50. N:=Now;
  51. end;
  52. begin
  53. With TTestTimerApp.Create(Nil) do
  54. Try
  55. Run
  56. finally
  57. Free;
  58. end;
  59. end.