AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Threads in einer Liste halten und kontroliert beenden
Thema durchsuchen
Ansicht
Themen-Optionen

Threads in einer Liste halten und kontroliert beenden

Ein Thema von Hobbycoder · begonnen am 30. Nov 2017 · letzter Beitrag vom 1. Dez 2017
 
Hobbycoder

Registriert seit: 22. Feb 2017
1.002 Beiträge
 
#7

AW: Threads in einer Liste halten und kontroliert beenden

  Alt 30. Nov 2017, 16:24
Knallt nicht. Vielleicht, weil er die Threads nicht beendet.
Die Schleife in RemoveAll läuft auch weiter und hängt im
Delphi-Quellcode:
      while self[i].Running do
        Sleep(50);
Anzahl der Threads verändert sich aber nicht. Als wenn der Thread auf das Terminate nicht reagiert.

was mir weiterhin auffällt, ich vergebe mit self.NameThreadForDebugging('THPing_'+IPAddr); eine Namen für den Thread. Dieser wird aber wohl nur für den ersten Thread verwendet. Denn in der IDE wird nur ein Thread mit diesem Namen angezeigt, es müsste aber bei allen 11 Thread ein passender Name stehen.

In dem Zusammenhang ist mir aufgefallen, dass in der IDE unter Thread-Status der NameThreadForDebugging zwar verwendet wird, aber die Thread-ID sich nicht verändert.
Also, wenn ich im Create des Threads einen Haltepunkt setze und die Threads nacheinander erzeugen lasse,
dann ist beim ersten mal: THPing_10.161.207.1(17732)
beim Zweiten Thread: THPing_192.1.1.6(17732) <-- Name geändert, aber ID gleich ??
beim dritten Thread: THPing_192.1.1.6(17732) <-- das gleiche

Es kommen aber Thread-ID's hinzu, nur wird der NameForDebugging immer beim ersten erzeugten Thread geändert.

Erzeugt werden so:
Delphi-Quellcode:
ar
  th: TTh;
begin
  th:=TTh.Create;
  th.IPAddr:=IPAddr;
  th.Thread:=TThPing.Create(True, IPAddr);
  if Assigned(FPingSuccess) then th.Thread.OnPingSuccess:=FPingSuccess;
  if Assigned(FPingError) then th.Thread.OnPingError:=FPingError;
  th.Thread.OnThreadStarted:=ThreadStarted;
  th.Thread.OnThreadEnded:=ThreadEnded;
  th.Thread.Resume;
  self.Add(th);
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.

Geändert von Hobbycoder (30. Nov 2017 um 16:40 Uhr)
  Mit Zitat antworten Zitat
 


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 07:50 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