![]() |
Indy10 Server OnDisconnect: wie Event synchronisiert werfen
Hi.
Ich habe folgende Frage zum TCPServer von Indy 10: Wenn ein Client die Verbindung beendet wird ja vom Indy Server das OnDisconenct Event geworfen. In diesem Event erhält man als Übergabewert die TidContext Klasse. In der steht ja welcher Client sich beendet hat (die Portnummer). Wie kann ich meinem Programm nun mitteilen welcher Client sich beendet hat? Im Eventhandeler des OnDisconenct Events muss ich das Event an eine andere Unit (Klasse) weiterreichen. Diesem Event möchte ich nun die Portnummer des Clients mitgeben. Aber da das OnDisconnect-Event bei Indy aus einem Thread geworfen wird kann ich das Event nur synchronisiert werfen (kann also keine Werte mitgeben). Nun könnte ich die Portnummer ja einfach in einer Klassenvariablen speichern, über die Klasse von Indy (TIdNotify) synchronisert eine Hilfsmethode aufrufen, und in der dann das Event an die andere Unit werfen (und die Portnummer mitgeben). Funktioniert soweit auch, aber: wenn sich viele Clients auf einmal beenden kann ich die OnDisconenct Events nicht so schnell abarbeiten. Die Klassenvarialbe würde also überschrieben bevor ich mit ihr arbeiten kann. Gibt es da eine vernünftige Lösung? |
Re: Indy10 Server OnDisconnect: wie Event synchronisiert wer
Hallo McMorton,
dann speichere doch in einem Array of TIdContext, dann wird nichts ungewollt überschrieben, oder meinst Du etwas anderes? Grüße Peter |
Re: Indy10 Server OnDisconnect: wie Event synchronisiert wer
Hi.
Danke erstmal für die Antwort. TidContext bekomme ich ja von Indy. Dort kann ich nichts speichern. Ich kann dort nur den Port lesen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz