Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

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

Re: Thread pausieren lassen und aufwecken

  Alt 19. Feb 2008, 08:35
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat