Die
Indy-Komponenten (ich kenne nur Version 9) sind eher so aufgebaut, dass man diese nicht in Threads legen sollte. Sie arbeiten intern mit TThread, welcher wiederum mit Synchronize arbeitet um gewisse Ereignisse in den aufrufenden Thread (wo
Indy initialisiert wurde) zu leiten. Synchronize ist aber dafür ausgelegt sich NUR mit dem MainThread zu synchronisieren, da es über das globale Application-Objekt arbeitet. Jetzt könnte ich mir an dieser Stelle vorstellen, dass das Application-Objekt so nach und nach überläuft und deswegen nicht mehr in den idle Zustand kommt.
War jetzt nur so meine erste Idee.
Edit: Warum legt man Socket-Komponenten in einen Thread, wenn man sie dann auf Non-Blocking setzt?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.