![]() |
Thead beenden bringt Fehler, was mache ich falsch?
Servus,
wenn ich einen Thread erstelle sieht das so aus
Delphi-Quellcode:
die execute
result := TMyThread.Create(id);
//... fThreads.Add(result);
Delphi-Quellcode:
löschen
begin
inherited; while not terminated do begin mach_was; sleep(5000); end; end;
Delphi-Quellcode:
und bei clear kommt der fehler
var
myThread : TmyThread; i : integer; begin for i:=0 to fThreads.Count-1 do begin myThread := TmyThread(fThreads.Items[i]); myThread.FreeOnTerminate := true; myThread.Terminate; end; fThreads.clear; //<- fehler ".... Das Handle ist ungültig(6). Process wurde angehalten..." Was mache ich falsch? Mfg |
Re: Thead beenden bringt Fehler, was mache ich falsch?
Evtl. ein waitfor einbauen.
|
Re: Thead beenden bringt Fehler, was mache ich falsch?
Was ist fThreads?
Wenn es sich zum Beispiel um eine TObjectList handelt, dann ist diese normalerweise für die Freigabe der enthaltenen Objekte verantwortlich. Also entweder OwnsObjects auf False setzen oder die Threads vor dem Löschen mit Remove aus der Liste entfernen. |
Re: Thead beenden bringt Fehler, was mache ich falsch?
Hi,
Dein Clear sorgt wohl dafür, dass alle Objekte gelöscht und freigegeben werden. Ich unterstell mal, du hast eine ObjectList. Ubergebe beim Construktor für OwnsObjects False, dann versucht die ObjectList beim Löschen der Items nicht die Objekte frei zu geben. Mit WaitFor hat das nichts zu tun. gruß oki edit: oh sorry, hab den Thread von Blup nicht ordentlich gelesen. :oops: |
Re: Thead beenden bringt Fehler, was mache ich falsch?
Zitat:
Danke. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:16 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