Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi IndyTCPServer in Service (https://www.delphipraxis.net/75080-indytcpserver-service.html)

faux 14. Aug 2006 08:11


IndyTCPServer in Service
 
Hallo!

Ich will einen Service schreiben, der aus einem IndyTCPServer besteht und bestimmte Anfragen auswertet.
Wie würden die Start- und Stop-Ereignisse denn aussehen?

Ich habe es zur Zeit so, das ist aber etwas sehr buggy:
Delphi-Quellcode:
procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
begin
  IdTCPServer1.Active := True;
  Sleep(1000);
  Started := IdTCPServer1.Active;
end;

procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
  IdTCPServer1.Active := False;
  Sleep(1000);
  Stopped := IdTCPServer1.Active;
end;

procedure TService1.ServiceExecute(Sender: TService);
begin
  while not Terminated do
  begin
    ServiceThread.ProcessRequests(False);
    IdTCPServer1.Active := Service1.Status = csRunning;
  end;
end;
Was muss/soll(te) ich anders machen?

Grüße
Faux

Meflin 30. Aug 2006 22:57

Re: IndyTCPServer in Service
 
Zitat:

Zitat von faux
das ist aber etwas sehr buggy:

Dass das keine Fehlerangabe ist solltest du doch wissen :zwinker:

Die Lösung mit dem Sleep(1000) um so den richtigen Status zu "erzwingen" halte ich auch für mehr als unglücklich - wenn das mal nicht prädestiniert ist als Fehlerquelle. Oder wozu soll das sont gut sein? Das halte ich definitiv für überarbeitungswürdig!

Das ServiceExecute Event ist doch das, das ständig ausgeführt wird solange der Service läuft oder? Das wiederum würde heißen dass du den Active-Status deines Servers ständig aktualisierst/änderst - imho unklug ;)



Alle Zeitangaben in WEZ +1. Es ist jetzt 06:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz