Einzelnen Beitrag anzeigen

Susanne

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

Re: Timer klappt nicht in Dienst

  Alt 20. Jan 2005, 09:57
Ja vielen Dank für das Beispiel, aber ich hätte noch ein paar Fragen zu den drei Funktionen

Bei Create und Delete, welche PArameter werden da übergeben, das erste ist jeweils das Handle, aber der Rest? Das Handle steht für das Programm, für das der Timer ist?

Delphi-Quellcode:
CreateTimerQueueTimer(hTimerQTimer, 0, @DoSomething, nil, 60000, 60000, 0);
DeleteTimerQueueTimer(hTimerQTimer, 0, 0);
Was soll die Funktion bewirken?
procedure DoSomething(Context: Pointer; TimeOut: Boolean); stdcall;
Jetzt zur Anwendung des ganzen:

ich habe einen Dienst und mit der folgenden Funktion starte ich den Dienst
Delphi-Quellcode:
procedure TTMService.ServiceStart(Sender: TService; var Started: Boolean);
   begin
      //hier Aufruf des Threads
      TMThread:= TMThread.Create(false);
   end;

Dann habe ich meinen Thread:
Delphi-Quellcode:
constructor TMThread.Create(CreateSuspended: Boolean);
  begin
    inherited Create(CreateSuspended);
    Priority := tpLowest;
    //Hier käme dann CreateTimerQueueTimer() hin?
  end;
Dann gibt es dort die Methode Execute: Hier soll zuerst die Methode FormCreate durchgeführt werden, und danach so die Methode TimerTimer aufgerufen werden, dort wird der Timer dann jeweils enabled = true oder false, je nach Arbeitsschritt. Der Timer ist zu Anfang der Methode erst mal enabled:= false; Wie muss ich das ganze jetzt ändern? Und bleibt der Aufruf der Methode Execute so oder muss ich daran etwas ändern? Kann ich dann schreiben if not Terminated then und dann die Funktion, die Timergesteuert ist? Und dann sollte er die Funktion immer in vorgegebenen Abständen aufrufen?
Delphi-Quellcode:
procedure TMThread.Execute;
   begin
      FormCreate;
      while not Terminated do
         TimerTimer(self);
      Timer.Free;
      ClockTimer.Free;
   end;
Susanne
  Mit Zitat antworten Zitat