Hola,
Lo que puede estar ocurriendo es que una determinada tarea de tu aplicación está ocupando toda la cuota del procesador, si se puede decir así, de modo que la interfaz de tu aplicación "no responde", o se queda medio "congelada". Ante esto (hasta donde yo llego) se pueden tratar de hacer al menos dos cosas.
La primera es separar aquella tarea que está ocasionando que nuestra aplicación se "congele", separarla, digo, en un hilo diferente. Pero esto implica trabajar con hilos, precisamente, y me temo que no soy yo el más adecuado para decir nada más, sino que es menester tener ciertas cuestiones en mente cuando se trabaja así.
La segunda, que puede utilizarse en según qué casos (un buen número de ellos) es utilizar la popular instrucción "Application.ProcessMessages()"; De este modo nuestra aplicación se tomará un respiro, procesará los mensajes que tenga pendientes (también para su interfaz de usuario) y acaso solucione sin más el problema.
Ahora bien, esto último suele usarse en "bucles", por ejemplo, tal que así:
Código Delphi
[-]
for i := 0 to j-1 do begin
Application.ProcessMessages();
end;
No sé si podrías tú utilizar algo así en tu aplicación o qué te vendría mejor. A lo mejor a algún otro compañero se le ocurre otra cosa que decirte.