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...