AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dienst stop nicht

Ein Thema von franktron · begonnen am 14. Jun 2010 · letzter Beitrag vom 15. Jun 2010
Antwort Antwort
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Dienst stop nicht

  Alt 14. Jun 2010, 16:25
Mein Dienst will nicht stoppen

Delphi-Quellcode:

procedure TKas_Server.DoRun;
Var
  XML_Server : Txml_kas_server;
begin
  FIsDebugFile:=True;
  Recon:=False;
  ShortDateFormat:='dd.mm.yyyy';
  DateSeparator:='.';
  TimeSeparator:=':';
  DecimalSeparator:=',';

  ShowStatus('KAS Server V1.2','');

  ShowStatus('PLUGINS Start','');

  XML_Server:=Txml_kas_server.Create;
  XML_Server.DBServer:=FServerClass.DBServer;
  XML_Server.DBUserName:=FServerClass.DBUserName;
  XML_Server.DBPassword:=FServerClass.DBPassword;
  XML_Server.DBDatabase:=FServerClass.DBDatabase;
  XML_Server.DebugLevel:=FServerClass.DebugLevel;
  XML_Server.OnStatus:=ShowStatus;
  XML_Server.UpdTable;
  XML_Server.StartDay;
  XML_Server.Free;

  Run:=True;
  ShowStatus('RUN','');
  While Run do
  Begin
    try
      If IDatum<>Date then //Tages Wechsel
      Begin
        ShowStatus('Tages Start');
        IDatum:=Date;

        If (AktMonat<>StrToInt(FormatDateTime('mm',Date))) Then
        Begin
          AktJahr:=StrToInt(FormatDateTime('yyyy',Date));
           AktMonat:=StrToInt(FormatDateTime('mm',Date));
        End;

        Try
          XML_Server:=Txml_kas_server.Create;
          XML_Server.DBServer:=FServerClass.DBServer;
          XML_Server.DBUserName:=FServerClass.DBUserName;
          XML_Server.DBPassword:=FServerClass.DBPassword;
          XML_Server.DBDatabase:=FServerClass.DBDatabase;
          XML_Server.DebugLevel:=FServerClass.DebugLevel;
          XML_Server.OnStatus:=ShowStatus;
          XML_Server.UpdTable;
          XML_Server.StartDay;
          XML_Server.Free;
        Finally

        End;
      End;
      Sleep(500);
      If Not Recon then
      Begin
        FServerClass.Reconnect;
        Recon:=True;
      End;
    except
      on E: Exception do
        Begin
        ShowStatus(E.Message);
        End;
    End;
  End;
  // stop program loop
  Run:=False;
end;

procedure Tkas_service.ServiceExecute(Sender: TService);
begin
   KAS_Server1.ShowStatus('Service Run');
   KAS_Server1.DoRun;
end;

procedure Tkas_service.ServiceStart(Sender: TService; var Started: Boolean);
begin
   kas_server1:=TKas_Server.Create;
  KAS_Server1.FIsDebugFile:=True;
  KAS_Server1.ShowStatus('Service Start');
  Started:=True;
end;

procedure Tkas_service.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
   KAS_Server1.ShowStatus('Service Stop');
  KAS_Server1.Run:=False;
  kas_server1.Free;
  Stopped := True;
end;
was habe ich falsch gemacht

P.S. in meiner Logfile wird das Stop Service nicht reingeschreiben
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Dienst stop nicht

  Alt 14. Jun 2010, 16:47
Hallo Frank,

steht denn etwas von Deinem Service in der Ereignisanzeige?
Welchen Status hat Dein Service wenn Du die Services listest?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Dienst stop nicht

  Alt 14. Jun 2010, 16:55
Ich denke der Grund ist deine Endlosschleife im DoRun:
Delphi-Quellcode:
While Run do
Begin
  [...]
End;
// stop program loop
Run:=False;
Run wird innerhalb der While-Schleife nirgends auf False gesetzt soweit ich das sehe und entsprechend wird die Schleife nie beendet.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Dienst stop nicht

  Alt 15. Jun 2010, 07:53
Nein aber im Stop Ereignis vom Service
aber ich hab mal gedebugt und das ServcieStop wird gar nicht angesprungen
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Dienst stop nicht

  Alt 15. Jun 2010, 07:59
Hallo,


schau Dir mal die Antwort auf Deine Frage von "SirThornberry" an. Da steht es nämlich drin
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: Dienst stop nicht

  Alt 15. Jun 2010, 09:34
Wenn ich das so machen geht das aber auch nicht
Delphi-Quellcode:
procedure Tkas_service.ServiceExecute(Sender: TService);
begin
   KAS_Server1.ShowStatus('Service Run');
   //KAS_Server1.DoRun;
  while Not Terminated do
  Begin
    sleep(10);
  End;
end;
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#7

AW: Dienst stop nicht

  Alt 15. Jun 2010, 09:37
Terminated wird True, wenn Terminate aufgerufen wurde ... wo wird dieses aufgerufen?

Deine While Run do -Schleife wird verlassen, wenn Run auf False gesetzt wird ... wo wird Run auf False gesetzt?

Bzw. Stopped wird im "Beenden"-Ereignis (ServiceStop) gesetzt, aber wo wertest du dieses, in deiner Programmschleife, aus?

usw.


Es bringt nichts irgendwas auszuwerten, was nie gesetzt wird
oder irgendwas zu setzen, welches nie ausgewertet wird.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (15. Jun 2010 um 09:40 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Dienst stop nicht

  Alt 15. Jun 2010, 09:43
And now for something completely different... die Passage
Zitat:
Delphi-Quellcode:
        Try
          XML_Server:=Txml_kas_server.Create;
          XML_Server.DBServer:=FServerClass.DBServer;
          XML_Server.DBUserName:=FServerClass.DBUserName;
          XML_Server.DBPassword:=FServerClass.DBPassword;
          XML_Server.DBDatabase:=FServerClass.DBDatabase;
          XML_Server.DebugLevel:=FServerClass.DebugLevel;
          XML_Server.OnStatus:=ShowStatus;
          XML_Server.UpdTable;
          XML_Server.StartDay;
          XML_Server.Free;
        Finally

        End;
sollte wohl besser etwas umgeschrieben werden.
Delphi-Quellcode:
XML_Server:=Txml_kas_server.Create;
        Try
          XML_Server.DBServer:=FServerClass.DBServer;
          XML_Server.DBUserName:=FServerClass.DBUserName;
          XML_Server.DBPassword:=FServerClass.DBPassword;
          XML_Server.DBDatabase:=FServerClass.DBDatabase;
          XML_Server.DebugLevel:=FServerClass.DebugLevel;
          XML_Server.OnStatus:=ShowStatus;
          XML_Server.UpdTable;
          XML_Server.StartDay;
        Finally
          XML_Server.Free;
        End;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

AW: Dienst stop nicht

  Alt 15. Jun 2010, 09:44
Meine nächste Vermutung, bei der ich mir aber nicht sicher bin ist, dass ganz keine Möglichkeit besteht das jemals ein Stop bei deinem Service ankommt.
Denn du hast da deine Endlosschleife und darin maximal ein Sleep. Aber nirgendwo verarbeitest du Nachrichten oder dergleichen.
Das ist wie in einer normalen Anwendung. Wenn du dort eine Endlosschleife drin hast welche keine Nachrichten verarbeitet, kann man auch auf schließen klicken wie man will und es passiert nichts weil die Nachrichten vom Programm nie verarbeitet werden.

[Edit]
Hab mal fix gesucht und ich glaub dir fehlt sowas:
Delphi-Quellcode:
while not Terminated do
begin
  [...]
  ServiceThread.ProcessRequests(False);
end;
[/Edit]
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's

Geändert von SirThornberry (15. Jun 2010 um 09:49 Uhr)
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#10

AW: Dienst stop nicht

  Alt 15. Jun 2010, 09:48
Ich hab den Fehler

Das

ServiceThread.ProcessRequests(False); Fehlte im ServiceExecute muss eine Schleife mit dem Befehl drin stehen sonst gehts nicht
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:16 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