Hola,
Tal vez tendrías que plantearte el llevar a cabo esa tarea tan "pesada" en un Hilo distinto del principal de la aplicación. Sobre los Hilos no me veo yo indicado para dar instrucciones a nadie, pero, es cuestión de que te informes un poco. Por ejemplo Delphi cuenta con la clase "TThread", que supongo que también estará en C++ Builder, y que facilita un tanto la creación y el proceso de distintos Hilos.
A veces es simplemente cuestión de tratar que la aplicación no se "ahoge" con el proceso (generalmente un bucle "while" o "for") que tiene que llevar a cabo. Para esto podría bastar situar alguna instrucción "Application.ProcessMessages" dentro del bucle para conseguir que la aplicación (sobre todo lo que toca a la interfaz de la misma) se alivie un poco y no se quede tan "colgada".
PD.
Bicho 1 -
dec 0