Leider wurde TThreadList schlampig programmiert, denn man kommt nicht ans TList.Notify ran ... sonst hätte man da eine "ordentliche" TObjektThreadList daraus machen können, welche auf OwnsObject=True eingestellt wird.
Es klingt ja fast danach, als wenn für dich eine Queue besser wäre, als eine Liste.
Leider ist Delphi da ebenfalls schlecht ausgestattet.
Es gibt eine TList, eine TObjectList und eine TThreadList, aber keine TObjectThreadList (und bei der kann kein Free ins Notify eingebaut werden)
Es gibt auch eine TList<T>, eine TObjectList<T>, eine TQueue<T>, eine TObjectQueue und eine TThreadedQueue<T>, aber auch hier fehlt die Möglichkeit der Speicherverwaltung/Objektfreigabe.
OK, man kann auch einfach Windows, Linux und OSX vergessen und verwendet Delphi nur noch für Android und iOS, denn mit ARC werden all diese Bugs umgangen.