Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
Turbo Delphi für Win32
|
Re: Wo wird Thread freigegeben?
6. Mär 2009, 20:56
Also:
Du erstellst den Thread, er geht über in die Execute Methode.
Gleich danach terminierst du diesen, daher wartet der Thread bis er die Execute-Methode verlassen hat und geht über in die von dir festgelegte onTemrinate-Methode. In dieser greifst du die Werte von bestimmten Eigenschaften ab und abschließend geht der Thread auch aus dieser Methode weiter.
MIt WaitFor wird gewartet, bis der Thread sich selber beendet hat, ehe mit FreeAndNil die Instanz aus dem Speicher gelöscht wird.
Es wäre wohl trotzdem besser, du stellt FreeonTerminate auf True und greifst wie zuvor in deiner onTerminate-Methode auf die Eigenschaften zu. Dann kannst du gewiss sein, das dein Thread fertig geworden ist. Setzt du noch einen Rückgabewert für das Beenden und wartest im Quellcode mit WaitForSingleObject(UpdateSucher.Handle, INFINITE) = <RückgabeWert>; bist du ebenfalls auf der sicheren Seite ...
Aber sowas schlug ja Apollonius in #2 schon vor.
Lars S. Wer nicht mit der Zeit geht, geht mit der Zeit.
|