Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Wie kann man ein Programm im Hintergrund ablaufen lassen?

  Alt 4. Jun 2015, 00:32
Also das mit der Konsolenanwendung sollte unser NonVCL-Experte aber doch selber wissen.

OK, einfaches Beispiel: Leg einen TTimer auf dein TService-Modul und erlebe, wie es seine WM_TIMER-Message verarbeitet.


Im Internen verwendet TService die Unit Vcl.Forms und dessen Messagebehandlung.
Im Hauptthread kann man daher auch Problemlos diese Unit einbinden und Vcl.Forms.Application.ProgressMessages benutzen.
Nicht über Vcl.SvcMgr.Application, aber wie man sieht, ist TService auch aus der VCL, obwohl ein Service ja "grundsätzlich" nicht visuell sein sollte.

Und hier die Message-Loop aus TServiceApplication.Run (Application.Run der Service-DPR):
Delphi-Quellcode:
while not Vcl.Forms.Application.Terminated do
try
  Vcl.Forms.Application.HandleMessage;
except
  on E: Exception do
    DoHandleException(E);
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat