Delphi-PRAXiS
Seite 3 von 8     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Service & on Execute (https://www.delphipraxis.net/160218-service-execute.html)

value is NULL 3. Mai 2011 13:11

AW: Service & on Execute
 
die idee ist ja recht cool und simpel aber wenn ich zB 5 Minuten warte bis ich wieder etwas tue, kann der Dienst nicht beendet werden. Hängt sich beim beenden jedes mal auf.

Jemand ne Idee?

PS: das einzige was ich vor habe ist, das ich zyklisch einen gewissen ablauf (Datenbankabfragen etc.) durchführe und danach ein paar minuten warte bis zum nächsten durchlauf

generic 3. Mai 2011 13:20

AW: Service & on Execute
 
Für regelmäßige Aufgaben gibt es in Windows die "geplanten Tasks".
-> siehe Systemsteuerung

Das sind einfache Programm/Skripte welche nach Regeln aufgerufen werden. z.B. mach mal alle 5 Minuten...

Das ist auch viel einfacher, als einen Dienst oder ähnliches hinzustellen.

value is NULL 3. Mai 2011 13:22

AW: Service & on Execute
 
nur das ich eine delphi console app als Service laufen lassen muss....

alfold 3. Mai 2011 13:25

AW: Service & on Execute
 
Hier noch ein simpler Vorschlag
nimm deinen timer, im timer dann:

Delphi-Quellcode:
Procedure Timer
begin
   inc(a);
end;


procedure Ttest.ServiceExecute(Sender: TService);
begin
  while not terminated do
  begin
    if a >= 10 then
    begin
       Beep; //Oder ruf hier DEINE Methode auf
       a:= 0;
    end;
 end;
end;
Gruss alfold

value is NULL 3. Mai 2011 13:33

AW: Service & on Execute
 
ach sch*** jetzt blick ich mich nicht durch...

kannst du mir das erklären damit ich das verstehe´?! :(

DeddyH 3. Mai 2011 13:35

AW: Service & on Execute
 
Wenn der Timer feuert, wird a um 1 erhöht. Hat a die 10 erreicht oder überschritten, wird ein Ton ausgegeben und a wieder auf 0 gesetzt, das Spiel beginnt also von vorn.

value is NULL 3. Mai 2011 13:44

AW: Service & on Execute
 
ja aber wann wird er hier erhöht?

Delphi-Quellcode:
procedure Ttest.ServiceExecute(Sender: TService);
begin
  while not terminated do
  begin
    if a >= 10 then
    begin
       Beep; //Oder ruf hier DEINE Methode auf
       a:= 0;
    end;
 end;
end;
müsste man hiern icht irgendwo a := a + 1 einbauen?

taveuni 3. Mai 2011 13:58

AW: Service & on Execute
 
Zitat:

Zitat von value is NULL (Beitrag 1098586)
die idee ist ja recht cool und simpel aber wenn ich zB 5 Minuten warte bis ich wieder etwas tue, kann der Dienst nicht beendet werden. Hängt sich beim beenden jedes mal auf.

Jemand ne Idee?

Delphi-Quellcode:
procedure Ttest.ServiceExecute(Sender: TService);
var
  c: Integer;
begin
  c:= 0;
  while not terminated do
  begin
    inc(c);
    if c:= 60 then
    begin
      // ruf hier DEINE Methode auf
      c:= 0;
    end;
    Sleep(1000);
  end;
end;

alfold 3. Mai 2011 13:58

AW: Service & on Execute
 
Nein zurückgesetzt!
Wenn der Timerinteval auf 1000 gleich (1sec) steht, wird jede sec a um 1 erhöht. (inc(a) entspricht a:=a+1;)
Ergo wird ca alle 10 sec der beep ausgelöst oder das was du da machen willst. Dann wird a wieder auf 0 gesetzt.
Nun dauert es wieder 10 sec und das spiel beginnt von vorn!

Hat @DeddyH doch geschrieben , oder war es nicht verständlich:gruebel:

Wenn es so ist, dann fehlen Dir aber die elementarsten Grundlagen.

Gruss alfold

rollstuhlfahrer 3. Mai 2011 14:05

AW: Service & on Execute
 
Da man einen Dienst nicht debuggen kann, würde ich mal empfehlen, zuerst eine Anwendung (mit graphischer Oberfläche) zu erstellen und dann mal alles zu implementieren, was du brauchst. Dann kannst du immer noch und ganz einfach alles in den Dienst reinkopieren und da du dir ja vorher sicher warst, dass es geht, geht es auch hinterher.

Zitat:

Zitat von value is NULL (Beitrag 1098588)
nur das ich eine delphi console app als Service laufen lassen muss....

Eine Konsolenanwendung hat im Normalfall nichts mit einem Dienst gemeinsam. Man kann das ungefähr so vergleichen: Du hast eine Fenster-Anwendung (GUI/VCL), bei der du das Fenster nicht siehst. Das Fenster ist auch nicht in der Lage, Fenster-Nachrichten zu erhalten (SendMessage geht also nicht). So und dass das jetzt noch zum Dienst wird, läuft das unter einem anderen Benutzerkonto (im Normalfall SYSTEM) und mit dessen Rechten.

Bernhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:14 Uhr.
Seite 3 von 8     123 45     Letzte »    

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