HandleWaitThreadUnit.pas 790 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. unit HandleWaitThreadUnit;
  2. interface
  3. uses
  4. SysUtils, Classes, Windows, Forms, Controls;
  5. type
  6. THandleWaitThread = class(TThread)
  7. private
  8. FHasTerminated: Boolean;
  9. FWaitHandle: THandle;
  10. protected
  11. procedure Execute; override;
  12. public
  13. property WaitHandle: THandle read FWaitHandle;
  14. property HasTerminated: Boolean read FHasTerminated;
  15. constructor Create(WaitHandle: THandle);
  16. end;
  17. implementation
  18. { THandleWaitThread }
  19. constructor THandleWaitThread.Create(WaitHandle: THandle);
  20. begin
  21. inherited Create (True);
  22. FHasTerminated := False;
  23. FreeOnTerminate := False;
  24. FWaitHandle := WaitHandle;
  25. Resume;
  26. end;
  27. procedure THandleWaitThread.Execute;
  28. begin
  29. while (not Terminated) and (WaitForSingleObject (FWaitHandle, 1000) = Wait_TimeOut) do;
  30. FHasTerminated := True;
  31. end;
  32. end.