Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
Delphi 10.3 Rio
|
Re: TIdTCPServer im Dienst kann nicht "resetet" we
12. Jun 2008, 20:40
Hi Cherry,
Du solltest bevor Du den Server auf Active false setzt solltest Du
alle aktiven Verbindungen trennen.
Am besten die Liste "Locken" rückwärts durch laufen(von hinten nach vorne)
dann schreibst Du in jede Client connection ein "Disconnect" Kommando,
damit der Client weiß das die Verbindung weg ist und erst danach schliesst
Du die Verbindung.
Dann den Threads etwas Zeit geben sich zu disconnecten z.b.
warten solange die Clientliste.count > 0
Danach Server.Active := false;
Die Eigenschaft ThreadTerminateTimeout(bin jetzt nicht sicher, ob's die bei Indy10 noch gibt)
sollte einen Wert > 0 haben.
Außerdem zur Sicherheit
try
TcpServer.Active := false;
except {} end;
Des Weiteren solltest Du auf den Developer-Snapshot 10.2.3 updaten.
Und zu guter letzt : Man kann einen Dienst debuggen !:
- BreakPoint setzen
- Dienst über Windows-Dienstmanager starten
- In Delphi "Start/Mit Prozess verbinden" wählen
- dann die Option "Systemprozesse anzeigen" wählen und mit Deinem Dienst verbinden
- danach Dein "Event auslösen", so das dein Breakpoint eintrifft
Greetz DataCool
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
|