AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Thead beenden bringt Fehler, was mache ich falsch?
Thema durchsuchen
Ansicht
Themen-Optionen

Thead beenden bringt Fehler, was mache ich falsch?

Ein Thema von Jackie1983 · begonnen am 21. Apr 2009 · letzter Beitrag vom 22. Apr 2009
Antwort Antwort
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#1

Thead beenden bringt Fehler, was mache ich falsch?

  Alt 21. Apr 2009, 15:13
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
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

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

  Alt 21. Apr 2009, 15:18
Evtl. ein waitfor einbauen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#3

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

  Alt 21. Apr 2009, 16:40
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.
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#4

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

  Alt 21. Apr 2009, 17:09
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.
42
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#5

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

  Alt 22. Apr 2009, 08:25
Zitat:
Was ist fThreads?
ok hätte noch dazu schreiben sollen das es eine TObjectList ist.
Danke.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:13 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