![]() |
Frage zu Thread.Destroy und Objekten
Hi,
die Frage ist etwas :oops: aber besser Frage ich nochmal nach, um mir Klarheit zu verschaffen: Wird Threadn.Destroy eines TThread wirklich im Bereich des VCL MainThreads abgewickelt wird? Wenn ich mir im .Destory per GetCurrentThreadID die ID hole, ist diese nicht die des VCL MainThreads. Was ist denn jetzt der beste, übliche Weg, Objekte für den Thread bereitzustellen und freizugeben? Alles im .Execute oder - so wie ich es seit langem mache - in Threadn.Create (ist ja VCL scope) und .Destroy? Gruß Assertor |
Re: Frage zu Thread.Destroy und Objekten
Zitat:
|
Re: Frage zu Thread.Destroy und Objekten
Hi Andreas,
danke für das erklären! Ich habe gerade mal etwas rumgesucht und finde viele Beispiele (z.B. auch im artverwandten ![]() ![]()
Delphi-Quellcode:
Das ganze von Justin Swett, inzwischen Sr. QA Engineer bei CG. So etwas verwirrt...
destructor TWorkerThread.Destroy;
begin Main.ThreadDone; //Legit to call VCL, since we're back in main thread inherited; end; Also die Objekte besser im .Execute erzeugen und freigeben. Gruß Assertor Edit: Nachtrag, jetzt sehe ich wieder klar... Wenn das TThread Objekt per .Free freigeben wird, läuft das .Destroy im MainThread Kontext ab, bei FreeOnTerminate innerhalb des Threads. Logisch... :wall: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:44 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