![]() |
VCL-Threads mit FreeOnTerminate:=true?
Hallo Delphifreunde, ich benutze für ein VCL-Progamm das VCL-Thread-Objekt (Datei -> neu -> Thread-Objekt), und zwar vielmals: Etliche Threads werden zur Laufzeit erzeugt und abgearbeitet, und sie enden mit dem Ende ihres jeweiligen Codes selbständig.
Ist es unter diesen Umständen ratsam, FreeOnTerminate:=true zu setzen? Ich tue das gleich am Beginn der überschriebenen Execute-Procedur, fand aber noch keinen auffälligen Unterschied, als wenn ich das weggelassen hätte. Danke und Gruß Delphi-Laie |
AW: VCL-Threads mit FreeOnTerminate:=true?
Wenn du Threads mit "Fire and forget" erstellst (also nicht irgendwo auf ihre Beendigung wartest und sie dann freigibst), erzeugst du mit FreeOnTerminate auf False Memleaks.
Dann wird nämlich die Thread Instanz nicht freigegeben. |
AW: VCL-Threads mit FreeOnTerminate:=true?
Danke!
Also, ich erstelle sie mit create, aber nicht mit einem selbstgeschriebenen Konstruktor, sondern eben mit dem, den das VCL-Thread-Objekt bereitstellt: Threadklassenname.create(false). Und beenden tun sie sich von allein, weil eben der jeweilige Code endet. Wenn ich Dich recht verstand, sollte FreeOnTerminate:=true also besser irgendwo im Threadcode auftauchen, nicht wahr? |
AW: VCL-Threads mit FreeOnTerminate:=true?
Ja, sollte er. Und zwar beim Erzeugen des Thread-Objekta.
|
AW: VCL-Threads mit FreeOnTerminate:=true?
Gut, danke Euch beiden! Werde ich ab sofort mich bemühen, auch daran zu denken.
|
AW: VCL-Threads mit FreeOnTerminate:=true?
Beachte aber, dass du auf einen solchen Thread auf keinen Fall irgendwo sowas wie nen WaitFor aufrufst, denn dann knallt es (weil der Thread sich unterm WaitFor wegzerstört oder gar nicht mehr existiert)
|
AW: VCL-Threads mit FreeOnTerminate:=true?
Soweit sind meine Threadkenntnisse noch nicht. Meine Threads haben, einmal erzeugt, vollauf zu tun, die warten auf nichts.
|
AW: VCL-Threads mit FreeOnTerminate:=true?
Ich kenne keinen VCL-Thread, scheint was neues zu sein :stupid:
|
AW: VCL-Threads mit FreeOnTerminate:=true?
Zitat:
Vom VCL-Thread sprach zudem niemand. Ich bezeichnete das von Delphi vorgefertigte Thread-Grundgerüst als VCL-Thread-Objekt, weil Luckie es in seinem Script "Threads unter Delphi" so nannte. |
AW: VCL-Threads mit FreeOnTerminate:=true?
Nein, es gibt den MainThread und der hat darum auch eine
![]() Dadurch könnte man fast sagen, dass der VCL-Thread gleich dem MainThread ist. Das macht mich dann aber stutzig wenn dann noch mehr VCL-Threads erzeugt werden sollen. Ja, da hat der Luckie wohl mal was falsch verstanden, denn das ganze Thread-Gedöns gehört eindeutig zur RTL ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz