yo lo haria de otra forma que evita estar llamando a processmessages , es algo que no me gusta y trato de evitar

.
con un thread a modo de timer ,y que te notifique cuando se cumpla el timer (Creo que las jvcl tienen un timer basado en thread) . en el execute del thread mira si ha pasado x tiempo desde la ultima vez y si es asi , resetea la variable tiempo y lo notifica en un evento, en la aplicación consola debes de capturar ese evento que genera el thread.
yo lo que hago es crearme una clase (en la unit de la consola) que reciba los eventos (aunque tambien podria crearte solo el evento).
TConsoleEvents=Class
Private
Public
Procedure OnTemporizador();
End;
y luego creas un objeto de tipo ConsoleEvents en la apl. consola
y asignas el evento del thread , al evento de la consola
Thread.Ontimer=ConsoleEvents.Ontemporizador.
luego en el evento de consoleevents hago lo que deseo hacer. (en el 1º ejemplo el tdummy hace lo mismo que el consoleevents que yo digo)
Procedure TConsoleEvents.OnTemporizador;
Begin
Writeln('Temporizador ');
End;
salud2.