Einzelnen Beitrag anzeigen

McMorton

Registriert seit: 8. Mär 2006
45 Beiträge
 
#1

Indy10 Server OnDisconnect: wie Event synchronisiert werfen

  Alt 9. Jul 2006, 23:38
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?
  Mit Zitat antworten Zitat