Advertisement
Guest User

Untitled

a guest
Oct 25th, 2014
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.77 KB | None | 0 0
  1. @foo
  2.  
  3. interface
  4.  
  5. type
  6. TProcRef = reference to procedure;
  7. TWorkerThread = class(TThread)
  8. public
  9. proc: TProcRef;
  10. procedure Execute; override;
  11. class procedure RunInThread(AProc: TProcRef);
  12. end;
  13.  
  14. implementation
  15.  
  16. procedure TWorkerThread.Execute;
  17. begin
  18. inherited;
  19. proc;
  20. end;
  21.  
  22. class procedure TWorkerThread.RunInThread(AProc: TProcRef);
  23. begin
  24. with TWorkerThread.Create(true) do
  25. begin
  26. FreeOnTerminate := true;
  27. proc := AProc;
  28. Resume;
  29. end;
  30. end;
  31.  
  32. procedure P;
  33. begin
  34. while true do
  35. begin
  36. sleep(1000);
  37. beep;
  38. end;
  39. end;
  40.  
  41. procedure TForm1.Button1Click(Sender: TObject);
  42. begin
  43. TWorkerThread.RunInThread(P);
  44. end;
  45.  
  46. TWorkerThread.RunInThread(procedure begin while true do begin sleep(1000); beep; end; end);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement