Einzelnen Beitrag anzeigen

TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#1

IdTCPServer in Dienstanwendung

  Alt 26. Sep 2012, 11:36
Delphi-Version: 2009
Hi,

ich habe einen Dienst erstellt indem ein TCP Server aus der INDY (10.2.5, Original von Delphi 2009) Sammlung verwendet werden soll.
Im OnCreate des Dienstes soll der Server initialisiert und im OnDestroy wieder deinitialisiert werden. Die Komponente TIdTCPServer habe
ich auf ein TDataModule gezogen.

Das folgende klappt wunderbar, der Server funktioniert.

Delphi-Quellcode:
procedure TSvcMain.ServiceCreate(Sender: TObject) begin
  try
    DMTCPServer.Start;
  except
    //Fehlermeldung
  end;{try..except}
end;
Delphi-Quellcode:
procedure TDMTCPServer.Start;
begin
  //init
  IdTCPServer.Active := False;
  IdTCPServer.Bindings.Clear;

  //Einstellungen
  IdTCPServer.DefaultPort := 60000;

  //Server starten
  IdTCPServer.Active := True;
end;
So jetzt kommt es zu dem Teil der nicht mehr klappt. Es wird eine Exception ausgelöst "Zugriffsverletztung bei Adresse ... in Modul ... Fehler beim Lesen von Adresse ..."
Delphi-Quellcode:
procedure TSvcMain.ServiceDestroy(Sender: TObject) begin
  try
    if DMTCPServer.Started then DMTCPServer.Stop;
  except
    on E: Exception do begin
      //Fehlermeldung
    end;{on}
  end;{try..except}
end;
Die Exception wird schon beim aufruf von TDMTCPServer.Started ausgelöst.

Delphi-Quellcode:
function TDMTCPServer.Started: Boolean;
begin
  result := IdTCPServer.Active;
end;

procedure TDMTCPServer.Stop;
begin
  //Server beenden
  IdTCPServer.Active := False;

  //Verbindungen löschen
  IdTCPServer.Bindings.Clear;
end;
In einer Konsolenanwendung klappt das ganze, ich bekomme dort keine Exception.
Ich verstehe das nicht so ganz, eigentlich müsste das doch funktionieren.
  Mit Zitat antworten Zitat