Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Thread nach Suspend neustarten lassen

  Alt 30. Mär 2007, 14:32
Ich halte es für keine gute Idee, einen Thread mit Suspend/Resume zu stoppen / starten, denn man weiss ja gar nicht, was er gerade macht.

Ich mache das immer mit Semaphoren / Events:

Delphi-Quellcode:
Procedure TMyThread.Execute;
Begin
  While Not Terminated do
    Case WaitForsingleObject (MySempahore, INFINITE) of
      WAIT_OBJECT_0 : _ExecuteTask;
      WAIT_ABANDONED : Terminated := True;
      WAIT_TIMEOUT:;
    End;
End;
Wenn ich nun die Semaphore auf 0 setze, dann wird erstmal der Task beendet (was ja eterministisch ist) und der Thread wartet genau da, wo ich ihn haben will...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat