AnonymousThreads.lpr 945 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. program AnonymousThreads;
  2. {$MODE DELPHI}
  3. {$IFDEF MSWINDOWS}
  4. {$APPTYPE CONSOLE}
  5. {$ENDIF}
  6. uses
  7. {$IFDEF UNIX}
  8. cthreads,
  9. {$ENDIF}
  10. Classes,
  11. Quick.Commons,
  12. Quick.Console,
  13. SysUtils,
  14. Quick.Threads;
  15. type
  16. TMyProcs = class
  17. class procedure DoWork;
  18. class procedure DoTerminate;
  19. end;
  20. class procedure TMyProcs.DoWork;
  21. var
  22. i : Integer;
  23. begin
  24. for i := 0 to 10 do cout('Working %d',[i],etTrace);
  25. cout('executed thread',etSuccess);
  26. end;
  27. class procedure TMyProcs.DoTerminate;
  28. begin
  29. cout('terminated thread',etSuccess);
  30. cout('PRESS <ENTER> TO EXIT',TLogEventType.etInfo);
  31. end;
  32. begin
  33. try
  34. console.LogVerbose := LOG_DEBUG;
  35. TAnonymousThread.Execute(TMyProcs.DoWork)
  36. .OnTerminate(TMyProcs.DoTerminate).Start;
  37. cout('Press <Enter> to exit',TLogEventType.etWarning);
  38. ConsoleWaitForEnterKey;
  39. except
  40. on E: Exception do
  41. Writeln(E.ClassName, ': ', E.Message);
  42. end;
  43. end.