Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.570 Beiträge
 
Delphi 12 Athens
 
#4

AW: Wie schließe ich einen schlafenden Thread ?

  Alt 5. Okt 2012, 12:46
Du könntest einen Event nutzen, siehe MSDN-Library durchsuchenCreateEvent, MSDN-Library durchsuchenSetEvent und MSDN-Library durchsuchenResetEvent.
Delphi-Quellcode:
constructor TDingsThread.Create;
begin
  FEvent := CreateEvent(nil, true, true, '');
  inherited;
end;

destructor TDingsThread.Destroy;
begin
  CloseHandle(FEvent);
  inherited;
end;
Im Execute des Threads wartest Du dann auf diesen Event.
while (WaitForSingleObject(FEvent, INFINITE) = WAIT_OBJECT_0) and not Terminated do Anhalten geht dann mit ResetEvent, Fortfahren mit SetEvent.
Delphi-Quellcode:
procedure TDingsThread.Pause;
begin
  ResetEvent(FEvent);
end;

procedure TDingsThread.ContinueWork;
begin
  SetEvent(FEvent);
end;
Wenn ich nichts Wesentliches vergessen habe, sollte das so funktionieren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat