Debes realizar el trabajo "pesado" en un hilo de ejecucion. Si pones a trabajar el hilo principal este no podra actualizar la interfaz. No te recomiendo para nada Application.ProcessMessages, ya que
puede generar problemas .
Busca por los foros sobre multithreading o hilos para investigar mas. Te advierto que la programacion multi hilo tiene una curva de aprendizaje bastante "problematica" si no se tiene una base teorica