Zitat von
Luckie:
In Delphi in a nutshell steht, dass wenn man den Konstruktor überschreibt, man die Thread-Instanz im Angehaltenenzustand erzeugen soll, damit er nicht schon los läuft bevor alles initialisiert wurde.
So macht das Sinn. Aber dies erledigt ja der Konstruktor. Und der kann auch ganz transparent für den Benutzer am Ende den Thread wieder aufwecken (so wie du es machst) oder eben nicht. Man sollte hier vielleicht besser zwischen "Benutzer" und "Entwickler" der Klasse unterscheiden. Für den Benutzer ist es transparent. Der Entwickler hat dafür gesorgt. Bsp:
Delphi-Quellcode:
constructor TSomeThread(Param1, Param2: TFoobar; OnTerminate: TNotifyEvent; bSuspended: Boolean = False);
begin
inherited Create(True); // create suspended
Self.OnTerminate = OnTerminate;
FreeOnTerminate := True;
if (not bSuspended) then
Resume(); // und Thread starten
end;
...