Hola Sofia:La mas sencilla que se me ocurre es sustituir WaitFor por:
while (WaitForSingleObject((HANDLE)Tarea->Handle, 100) == WAIT_TIMEOUT)
Application->ProcessMessages();
donde el 100 es el retardo en milisegundos con que se ejecutará lo que hay dentro del bucle, en este caso procesar la cola de mensajes.
Saludos.