TThread.OnTerminate wird nicht ausgeloest

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

TThread.OnTerminate wird nicht ausgeloest

Beitrag von Eclipticon »

Hi,

ich verwende eine TThread-Klasse in zwei unterschiedlichen Zusammenhaengen (beides Windows 32bit):

1. Meine Thread-Klasse wird vom Main-Thread einer GUI-Applikation gestartet, OnTerminate wird wie erwartet ausgeloest.

2. In einem Windows Service wird die selbe Thread-Klasse vom Service Thread, der wiederum vom Mainthread in TCustomDaemon gestartet wird, gestartet. Endet in diesem Fall Execute, wird OnTerminate nicht ausgeloest - wie kann man das erklaeren bzw. wie kann ich es verhindern?

Danke!

mschnell
Beiträge: 3411
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: TThread.OnTerminate wird nicht ausgeloest

Beitrag von mschnell »

Das ist in Lazarus normal.

Thread -> Mainthread Signale (genau wie TTimer) funktionieren nur in GUI Widget Types.

(Ich kenne allerdings die Funktionsweise des für "Dienste" verwendete Widget Types nicht).

-Michael

gocher
Beiträge: 298
Registriert: Di 23. Nov 2010, 23:41
OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
CPU-Target: 32Bit/64Bit
Wohnort: Geldern
Kontaktdaten:

Re: TThread.OnTerminate wird nicht ausgeloest

Beitrag von gocher »

Ein funktionierendes Service/Daemon Beispiel: http://www.gocher.me/Daemon , erweitert läuft es auf meinem Webserver und bearbeitet alle Aufgaben im Hintergrund.
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me

Antworten