Nun habe ich ein Problem. Bei einer geringen Anzahl an Threads funktioniert alles problemlos aber sobald die Anzahl ein wenig zunimmt, beenden die Threads nicht richtig.
Woran kann das liegen und was kann man dagegen machen??
Delphi-Quellcode:
procedure TForm1.btnStartThreadsClick(Sender: TObject);
var i : Integer;
begin
// Evtl. Threads stoppen
if length(ThreadArray) > 0 then
for i := 0 to length(ThreadArray) - 1 do
ThreadArray[i].Terminate;
Listview1.Clear;
SetLength(ThreadArray,5);
for i := 0 to length(ThreadArray) - 1 do begin
with Listview1.Items.Add do
Caption := '..loading';
// 1. Thread erstellen (Pausiert)
// 2. ListView Index übergeben
// 3. Priorität übergeben
// 4. Automatische Speicherfreigabe aktivieren
// 5. Erstellten Thread starten
ThreadArray[i] := TMyThreads.Create(True);
ThreadArray[i].FIndex := i;
ThreadArray[i].FIPValue1 := 192;
ThreadArray[i].FIPValue2 := 168;
ThreadArray[i].FIPValue3 := 0;
ThreadArray[i].FIPValue4 := i+1;
ThreadArray[i].Priority := tpIdle;
ThreadArray[i].FreeOnTerminate := True;
ThreadArray[i].Resume;
end;
end;
// Ich nehme mal an das hängt damit zusammen, dass man nicht gleichzeitig soviele Pings machen kann...