Zitat:
Also ist die Idee, die erste Struktur in eine Stringlist zu packen, dann aufzuteilen (hier / 12 oder wenn X < 12 dann = X).Sind es 24 ordner dann bekommt jeder Thread 2 Ordner die er mit Unterordner auslesen soll.
Jeder Thread hat eine eigene ErgebnisStringList die nach Ablauf aller Threats zusammengeführt, sortiert und in das Stringgrid gepackt wird.
Das macht Dir eine TParallel.For schleife automatisch. Mein Vorschlag: lies erst Dein Hauptverzeichnis in eine Liste und arbeite diese Liste mit For() ab.
http://docwiki.embarcadero.com/Libra....TParallel.For
In TParallel.For sollten keine Synchronize Aufrufe stattfinden. Diese sind eigentlich meistens eine schlechte Idee, da sie den Thread dazu bringen zu warten. Besser ist es, das Ergebnis in eine geschützte Variable zu packen und der Oberfläche des Programmes mitzuteilen, dass sie die geschützte Variable auslesen darf um die Ergebnisanzeige zu aktualisieren.
Da TParallel.For den aktuellen Prozess blockiert, muss in diesem Fall der Aufruf in einem TTask.Run() erfolgen.