Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.667 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Dienst und Timer

  Alt 15. Dez 2020, 15:00
Das ist mir bisher (über etliche Jahre hinweg) noch bei keinem Dienst mit Timersteuerung passiert.
Das ist auch nicht so leicht möglich, mit einem TService im Delphi.

Ein TTimer erstellt ein eigenes MessageOnly-Window (Delphi-Referenz durchsuchenAllocateHWnd) im Hauptthread (HInstance), über welches die Timer-Messages laufen.

TService erstellt einen Thread (TServiceStartThread), in dem der MSDN-Library durchsuchenStartServiceCtrlDispatcher gestartet wird, da diese Funktion bis zum Programmende nicht zurückkehrt.
Darin wird dann ein weiterer Thread gestartet, in dem der Service arbeitet (TService.Execute)
Und bei weiteren Servern ala REST, HTTP, DataSnap oder sonstwas, landen die Aufrufe nochmals in weiteren Threads.

Ohne Synchronize oder eine Message an den Hauptthread (PostThreadMessage), oder an ein Fenster des Hauptthreads (SendMessage/PostMessage), arbeitet somit niemand "permanent" im Hauptthread.
Demnach ist die Wahrscheinlichkeit geringer, dass die Message des Timer nicht verarbeitet werden kann, aber wenn doch, dann ist es die Schuld des Entwicklers.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (15. Dez 2020 um 15:04 Uhr)
  Mit Zitat antworten Zitat