Wie wäre es mit einem Counter? Ich zietiere mal aus
diesem Delphi-Treff-Tutorial:
Zitat:
...Und hier wird es nun spannend. Nachdem die Arrays noch einmal neu gefüllt werden, wird ein interner Thread-Zähler auf 3 gesetzt. Dann werden die Threads gestartet:
Code:
with TBubbleSort.Create(BubbleSortBox, BubbleSortArray) do
OnTerminate := ThreadDone;
Durch den Aufruf des Konstruktors Create wird auch automatisch die Execute-Methode aufgerufen, so dass der Thread startet. Außerdem wird dem Thread hier noch mitgeteilt, dass er auf das OnTerminate-Ereignis mit dem Ausführen der Methode "ThreadDone" reagieren soll. OnTerminate wird ausgelöst, sobald ein Thread fertig abgelaufen ist.
Nun laufen die Threads also, und in der Variablen ThreadsRunning steht, wie viele es sind. Ist ein Thread fertig, wird der Wert in ThreadDone um 1 reduziert. Sind alle Threads mit dem Sortieren am Ende angekommen, ist die Variable 0, und der Start-Button wird wieder verfügbar gemacht.
Ich bin bei Threads auch noch recht unerfahren, aber kann man nicht in deinem fall nach der Schleife, die die Threads erzeugt eine neue "Warteschleife" starten, die solange läuft (und nix macht) bis der Counter auf 0 steht? Oder die wie im Bsp. im OnTerminate eines Threads ausgeführte-Funktion veringert den Counter und schaut ob er schon null ist (also der letzte Thread fertig) und startet dann eine neue Prozedur, mit der es weitergeht und die die gesammelten Werte weiterverarbeitet...