Ich bin noch nie gut mit diesem "Fire & Forget"-Ansatz (also FreeOnTerminate = True) gefahren, dass man einen Thread startet, quasi wie "
Hier, mach was, vielleicht bist du später noch da, vielleicht nicht. Mir doch egal".
Ich würde entweder einen Thread pro Postfach/Mailbox machen, oder du hast eher etwas vor, was besser in die Philosophie von Tasks passt, das was in der
Unit System.Threading liegt. Hast du dir das mal angeschaut?
Natürlich kannst du deinen Thread auch weiterhin auf FreeOnTerminate=True lassen und ihm gleichzeitig (z.B. im Konstruktor) etwas mitgeben, wo der Thread selbst nachschauen kann "Werde ich eigentlich noch gebraucht?". Delphi's Standardbibliothek hat da nichts wirklich fertig, was der Fachmann gerne ein "Cancellation Token" nennt, aber du könntest genauso gut ein normales Event (
Unit System.SyncObjs) nehmen. Bei jedem Durchlauf kann der Thread ja schauen ob das "wirSindJetztFertig"-Event bereits ausgelöst wurde, und wenn ja, dann geht er zu Ende.