Zitat:
Aber wie soll ohne FreeOnTerminate freigegeben werden?
Du hast mit deinem
EvTerminate
doch schon genau die richtige Stelle dafür! Entferne es nach wie vor aus deiner Liste und danach gibst du den TThread frei.
Und wie? In OnTerminate darf kein Free aufgerufen werden.
Zu Problem 2 würde ich deinem Thread die Logik dafür nicht mitgeben. Das EvTerminate
ist doch auch hier eigentlich die perfekte Gelegenheit dafür!
Wie soll im OnTerminate der zuletzt gestartet Thread erkannt werden, wenn alle Threads gleichzeitig laufen und unterschiedlich lange Laufzeiten haben? Ein Thread kenn die anderen ja nicht und weiß in seinem OnTerminate nicht, was noch läuft und ob er der zuletzt gestartete ist.