Mit TCriticalSection hängt sich das Programm nicht mehr auf, jedoch werden nicht alle Datensätze übertragen.
Die Problematik der Sache ist folgende: sehr oft, genauer gesagt fast immer, greifen die Threads fast gleichzeitig auf den ServerSocket und die Daten werden nicht nur an einen Client verschickt, sondern in der Schleife an alle verbundenen Clients. Ich denke, diese Übertragung in der Schleife braucht Zeit und irgendwas wird da blockiert, so dass nicht alle Threads an den Socket wirklich rankommen... Keine Ahnung.
Noch Ideen? Ich überlege mir jetzt, eine Art "Zwischenspeicher" aufzubauen, auf den der Socket regelmäßig, z.B. mit einem Timer oder so, zugreift und leert, indem die gesammelten Daten verschickt werden. Ich habe aber noch keine gewisse Vorstellung wie so was aussehen könnte. Es muss aber richtig schnell sein. Hatte jemand schon so was gemacht?