Ereignisorientierte Threads/Message Handling
Threads werden normalerweise nicht ereignisorientiert betrieben. Das heisst, man leitet von
TThread ab und schreibt sequentiellen Code in die abgeleitete Execute-Methode. Folgende Low-Level-Klasse
TMessageThread stellt eine Alternative zu
TThread dar: Statt der Execute-Methode müssen hier message-Methoden geschrieben werden. Entweder in einer abgeleiteten Klasse von
TMessageThread oder in einer fremden Klasse (in diesem Fall entfällt das Ableiten). Die Message-Methoden können dann über
PostMessage im Kontext des Threads ausgelöst werden. Wenn keine Messages verschickt werden schläft der Thread.
Anwendungsbereich: z.B. als Basis für die Realisierung eines Worker-Threads, der getrennt von der GUI arbeitet und Instruktionen vom GUI-Mainthread erhält.
Anwendungsbeispiel (Beispiel mit SendMessage zur Veranschaulichung):
Natürlich hätte man das Messaging alleine auch ohne Windows-Messages realisieren können. Hier geht es jedoch um eine Implementation einer minimalen Windows-Message-Schleife in einem Thread. So kann bspw. relativ einfach ein Windows-Timer im Thread betrieben werden.