Danke für die Anregungen.
Das ist mein erster Versuch, daher ist alles durcheinander.
Hallo, hast du erstmal ganz einfach getestet ob es klappt aus der Liste zu lesen (in der Thread Procedure ein bissschen zu warten) und dann ein Ergebnis zu schreiben?
Also ohne den Internet Zugriff.
Ohne Thread klappt das, also in einer normalen Schleife, wenn alle Einträge nacheinander abgearbeitet werden.
Ich verstehe nicht, warum diese exotisschen Dinge wie TThreadPool::QueueWorkItem(..)
oder dein selbst erfundenes TSimpleSemaphore
notwendig sind.
Bei Delphi 10.4 gibt es scheinbar keine Möglichkeit, mittels TThreadPool die Anzahl der Threads zu begrenzen, daher der Versuch über TSemaphore. Da aber auch TSemaphore scheinbar keine Erstellung mit einem Maximalparameter für die Begrenzung der Threads zulässt, habe ich TSimpleSemaphore erstellt.
Macht doch einfach deinen eigenen TThreadPool
auf, mache so oft TTask.Run(..)
wie du Einträge in der Liste hast und sage am Schluss TTask::WaitForAll(..)
.
Das würde ich gerne, habe bisher aber nicht verstanden, wie das umgesetzt wird.
LG Mathias
PS:
Zitat von
Der schöne Günther:
PS: Das eigentliche Abholen der Daten lässt sich sehr stark vereinfachen:
Ist das ein Thread?