@Mavarik:
Ich habe zwar den
Indy-UDP-Server noch nicht so oft eingesetzt, aber ich bin mir ziemlich sicher das das OnUDPRead
immer wieder von
Indy-Listener-Thread aufgerufen wird.
Genauso läuft es beim IdTcpServer und dem "OnExecute" Event.
In der Doku steht dazu auch, das der Code Thread-Safe sein muss und/bzw. Interaktion mit der
Gui synchronisiert werden müssen.
Dein Code ist so nicht richtig strukturiert/aufgebaut,
was ist wenn das OnUDPRead-Event ein zweites/xyz mal eintritt bevor der TcpClient seine Arbeit verrichten kann ?
Bei Deinem Code würde der TcpClient nochmals versuchen zu connecten, obwohl er gerade verbunden ist und brav arbeitet.
und anstatt IdUdpServer1.disconnect aufzurufen, wäre es mit IdUdpServer1.Active := false;
Bei einem verbindungslosen Protokoll "besser zu lesen".
Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.