Einzelnen Beitrag anzeigen

Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: TIdTCPServer im Dienst kann nicht "resetet" we

  Alt 12. Jun 2008, 19: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.
  Mit Zitat antworten Zitat