Man kann nicht erwarten, das Einstellungen, die vor einem "Inherited-Create"-Aufruf durchgeführt werden, anschließend noch so vorhanden sind, denn schließlich initialisiert der Create-Aufruf ja alle Eigenschaften. Lieber so:
Delphi-Quellcode:
Constructor TMyThread.Create;
Begin
Inherited Create (True); // Der Thread schläft
MyData.Initialize; // eigene Felder, Daten etc. initialisieren
Resume; // und dann, zum Schluß der Initialisierung aufwecken
End;
So ist es
imho auch sauberer.
)
Wenn man möchte, das ein Thread nur dann etwas macht, wenn z.B. eine Checkbox 'gecheckt' (
) wuirde, dann sollte man im Click-Ereignis der Checkbox den Thread steuern. Ob man das über ein Suspend / Resume, oder mit Hilfe von Synchronisationsobjekten macht, bleibt jedem Selbst überlassen, wobei nur mit den Synch-Objekten gewährleistet ist, das der Thread an einer wohldefinierten Stelle einschläft / aufwacht.
Meine Threads sehen eigentlich immer gleich aus (in der Execute-Methode wird gewartet, das etwas passiert).
Vielleicht kannst Du dein Problem mit Hilfe eines
Thread-Pools lösen. Dann musst Du nur die Arbeit definieren (Job), die im Hintergrund ausgeführt wird und über die Synchronisationsmechanismen brauchst Du dir keine Gedanken zu machen. Andererseits dürfte der Code für Dich sehr hilfreich sein.