Habría que conocer mejor ese componente que usas.
Si se queda "pegado el programa" añade un Application.ProcessMessages dentro del bucle, antes de asignar el nombre de archivo.
El problema suponto que viene porque el componente no lanza excepciones y si tarda mucho, es normal que se paralice.
Si no sirve nada, igual creando varios hilos, puedes lograrlo, pero se va a complicar, primero sería conveniente saber si el componente tiene un método CancelarProcesado o algo así, podría solucionarse con un botón Cancelar
.
¿nombre del componente?
¿tienes el código fuente?
Saludos