Nicht nur theoretisch ... das muß auch praktisch immer im Hauptthread laufen.
Wenn nicht, dann mußt du synchronisieren.
auch die
tcp-komponente erzeugt keinen eigenen thread pro connection.
Eher selten ... das tun die meisten dieser Komponenten intern dennoch machen.
prüf es doch einfach und bau in die Aufrufe Folgendes ein:
Assert(MainThreadID = GetCurrentThreadId, 'nee, is doch''n Thread');