@Matze
Dein Code läuft, kein Zweifel, aber ohne Rekursion. Dein ProcessMessages ruft nicht wirklich ein weiteres ProcessMessages auf. In deinem Beispiel wird das ProcessMessages immer der Reihe nach aufgerufen. Du hast nur 2 geschachtelte Schleifen, das ist aber keine Rekursion.
Das was ich meinte ist, wenn ein ProcessMessages#1 ein Event deiner Application aufruft, in dem du wiederum auch ProcessMessages#2 nutzt. Dann ist das Event aus ProcessMessages#1 noch nicht abgearbeitet und damit ProcessMessages#1 noch nicht fertig.
Ist im Nachhinein auch ein sehr blödes Thema, weiß auch nicht, wie ich es besser beschreiben soll. Naja, Lösung habe ich zwar noch nicht, aber Problem zumindest erkannt und damit 50% erreicht.
/edit: @dizzy - Richtig, mir passiert das mit SOCKET-Events, aber selbes Event-Handling wie dein Timer-Bsp. Leider fällt mir nichtmal auf dem Schei**haus eine vernünftige Alternative ein