Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Thead beenden bringt Fehler, was mache ich falsch? (https://www.delphipraxis.net/132893-thead-beenden-bringt-fehler-mache-ich-falsch.html)

Jackie1983 21. Apr 2009 15:13


Thead beenden bringt Fehler, was mache ich falsch?
 
Servus,

wenn ich einen Thread erstelle sieht das so aus
Delphi-Quellcode:
  result := TMyThread.Create(id);
  //...
  fThreads.Add(result);
die execute
Delphi-Quellcode:
begin
  inherited;
  while not terminated do begin
    mach_was;
    sleep(5000);
  end;
end;
löschen
Delphi-Quellcode:
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
und bei clear kommt der fehler
".... Das Handle ist ungültig(6). Process wurde angehalten..."

Was mache ich falsch?

Mfg

sirius 21. Apr 2009 15:18

Re: Thead beenden bringt Fehler, was mache ich falsch?
 
Evtl. ein waitfor einbauen.

Blup 21. Apr 2009 16:40

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.

oki 21. Apr 2009 17:09

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:

Jackie1983 22. Apr 2009 08:25

Re: Thead beenden bringt Fehler, was mache ich falsch?
 
Zitat:

Was ist fThreads?
ok hätte noch dazu schreiben sollen das es eine TObjectList ist.
Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz