Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Sir Rufo,
28. Jun 2014
Da der Code ja im TForm.OnCloseQuery laufen soll, solltest du den wie folgt nehmen:
for i := 0 to FThread_liste.Count - 1 do
if Assigned(FThread_list.Items) and (FThread_list.Items is TThread) then
(FThread_liste.Items as TThread).Terminate;
Die Überprüfung if FThread_liste.Count <> 0 then ist überflüssig, denn genau das passiert auch bei for i := 0 to FThread_liste.Count - 1 do...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Sir Rufo,
27. Jun 2014
Na logisch, wenn der Thread auch nicht selber schaut, ob er aufhören soll :roll:
Eine TObjectList mit TObjectList.OwnsObjects auf True verwaltet die Instanzen des Inhaltes selber und bei Clear werden alle Instanzen (in der Liste) freigegeben.
Ein Thread wird im destructor beendet (Terminate) und die Instanz verschwindet im Nirwana ...
... wenn der Thread-Code auch wirklich aufhört
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Sir Rufo,
27. Jun 2014
Den Code kann man auch so schreiben
// OwnsObjects sollte True sein
FThread_liste.Clear;
Die Threads und nicht die Thread-Liste sollen ja auch das Terminated auswerten.
Der Code zeigt allerdings auch, dass du das eben nicht machst, da du augenscheinlich nicht weißt, wo und wozu man das benutzt.