Hallo Leute!
Ich habe ein Problem! Ich habe eine Klasse geschrieben, die mehrere Threads verwaltet, diese Threads haben die Aufgabe, einen bestimmten Host anzupingen (Per IdIcmpClient) Das klappt auch alles. Die Ergebnisse werden in eine Containerklasse geschrieben, die eine TThreadlist kapselt.
In dieser Containerklasse gibt es jetzt die Methode
UpdateListbox(SL: TStrings)
Diese Methode wird zum Beispiel über einen Buttonklick ausgelöst (!!Extern!!)
Das updaten der Listbox funktioniert, aber danach bleiben die Threads einfach stehen. Der Threadstatus ist aber weiterhin "Ausführbar". Der gesetzte Breakpoint in der "While-not-Terminated" schleife wird nicht mehr erreicht.
Die UpdateListbox Prozedur sieht so aus:
Delphi-Quellcode:
procedure TPingResultList.UpdateListbox(SL: TStrings);
var i: integer;
begin
SL.Clear;
if FPingResults.LockList.Count > 0
then
for i := 0 to FPingResults.LockList.Count - 1 do
begin
SL.Add(TPingResult(FPingResults.LockList.Items[i]).StringResult)
end;
end;
In jedem Thread befindet sich ein Pointer auf diese Liste, damit Einträge hinzugeügt werden können.
Woran liegt das? Wie kann ich das umgehen?
Gruß und danke schonmal
Richard