Ver Mensaje Individual
  #1  
Antiguo 26-08-2008
emeceuy emeceuy is offline
Miembro
 
Registrado: jun 2003
Ubicación: Uruguay
Posts: 122
Reputación: 21
emeceuy Va por buen camino
detener procedimiento largo

Hola, tengo una consulta "rara"... necesito poder detener un evento que se ejecuta al presionar un botón y es muy largo (dura al rededor de 6 minutos)... al apretar dicho botón comienzan a ejecutarse varias rutinas, procedimientos, funciones, etc, son unas cuantas, como les decía duran varios minutos. Para que no se cuelgue el programa y se puedan hacer algunas otras cosas o cambiar el cursor de lugar, etc, he puesto en varios lugares "application.procesmessage".

Así el programa funciona de maravillas, pero me gustaría tambien poder detenerlo al presionar un botón de cancelar o algo así...

Una posibilidad sería utilizar un flag boolean y activarlo al presionar cancelar, y chequear este flag que no esté seteado antes de entrar a cada funcion, el problema es que cada funcion tarda unos cuantos segundos, y no quiero tener que esperar tantos segundos para detener el ciclo, entonces esa forma no me sirve, e ir más hacia adentro de las funciones para hacer algo similar y "acortar" el tiempo ese, sería muy complicado, porque son funciones dentro de otras funciones. Espero ser claro, es dificil de explicar.

A alguien se le ocurre alguna idea? muchas gracias desde ya !

Adjunto un "esquema" del código:
Código Delphi [-]
procedure TfrmPrincipal.btnAnalizarClick(Sender: TObject);
begin
   if EST.Conectado then
      begin
         funcion1(...);
         funcion2(...);
         fDemora(...);
         procedimiento1(...);
         fDemora(...);
         funcion3(...);
         ... etc, etc
      end;
end;
__________________
Marcelo C.
Responder Con Cita