timerdemo.pp 954 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. library timerdemo;
  2. {$mode objfpc}{$H+}
  3. uses
  4. {$IFDEF UNIX}
  5. cthreads,
  6. {$ENDIF}
  7. SysUtils, Classes, wasm.timer.shared, wasm.timer.api, wasm.logger.api, wasm.timer.objects;
  8. Type
  9. { TTestTimer }
  10. TTestTimer = class(TObject)
  11. FTimer1 : TWasmTimer;
  12. FTimer2 : TTimer;
  13. Fcount : Integer;
  14. Procedure Run;
  15. private
  16. procedure DoTimerTick(Sender: TObject);
  17. end;
  18. { TTestTimer }
  19. procedure TTestTimer.Run;
  20. begin
  21. Writeln('Creating timers');
  22. FTimer1:=TWasmTimer.Create(1000,@DotimerTick,Self);
  23. FTimer2:=TTimer.Create(Nil);
  24. FTimer2.Interval:=3000;
  25. FTimer2.OnTimer:=@DoTimerTick;
  26. FTimer2.Enabled:=True;
  27. end;
  28. procedure TTestTimer.DoTimerTick(Sender: TObject);
  29. begin
  30. Inc(FCount);
  31. Writeln('Timer tick ',FCount,': sender: ',Sender.ClassName);
  32. if FCount>=33 then
  33. begin
  34. Writeln('Stopping timers');
  35. FreeAndNil(FTimer1);
  36. FreeAndNil(FTimer2);
  37. end;
  38. end;
  39. begin
  40. With TTestTimer.Create do
  41. Run;
  42. end.