Ver Mensaje Individual
  #2  
Antiguo 21-09-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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
  // Tarea más o menos "pesada" aquí

  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.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita