Einzelnen Beitrag anzeigen

Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Dienst selbst beenden bei Fehler

  Alt 10. Jan 2005, 14:29
ich habe einmal die Unit Dienst mit diesen drei Funktionen:

Delphi-Quellcode:
//Initialisierung des Services
procedure Service.ServiceStart(Sender: TService; var Started: Boolean);
   begin
      //hier Aufruf des Threads
      TMThread:= Thread.Create(false);
   end;

//DeInitialisierung des Services
procedure Service.ServiceStop(Sender: TService; var Stopped: Boolean);
   begin
      if Assigned(TMThread) then
         begin
            {TMThread.Terminated;}
            TMThread.Terminate;
            //Freigeben des Threads
            FreeAndNil(TMThread);
         end;
   end;

//Steuerung des Dienstes
procedure Service.ServiceExecute(Sender: TService);
   begin
      //solange nicht beendet wurde
      while not Terminated do
         ServiceThread.ProcessRequests(True);
   end;

aus einem anderen Programm wird die Methode ServiceStart aufgerufen zum starten des Dienstes und die Methode ServiceStop, um den Dienst zu stoppen


Dann gibt es die Unit Thread mit diesen Funktionen:

Delphi-Quellcode:
constructor Thread.Create(CreateSuspended: Boolean);
  begin
    inherited Create(CreateSuspended);
    Priority := tpLowest;
  end;

procedure Thread.Execute;
   begin
      FormCreate;
      while not Terminated do
         TimerTimer(self);
      Timer.Free;
      ClockTimer.Free;
   end;

procedure Thread.Terminate;
   begin
      Interrupted:= true;
      while not(BlockAbarbeitungFertig) do
         begin
            sleep(1000);
         end;
      FormCloseQuery;
   end;
In Thread.Execute wird die Methode TimeTimer aufgerufen, die auch wieder andere Funktionen aufgeruft. Wenn dort irgendwo dann ein Fehler auftritt, dann soll sich der Dienst beenden. Wie mache ich das?
Susanne
  Mit Zitat antworten Zitat