Ver Mensaje Individual
  #6  
Antiguo 23-01-2009
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Reputación: 19
Chris Va por buen camino
Lo que pasa es que el el primer código, por estar dentro de un synchronize, todo el código de existe en "adentlabarra" se ejecuta a como si estobien en el hilo principal. Por esta razón, cuando llegas a la línea "while ... do" la variable count ya está en 1.

Ahora, cual es la direfencia respecto al segundo código: bien, luego de crear el nuevo hilo, la aplicación sigue su ejecución normal, como si nada la detuviese, pero por el contrario el hilo queda dormido por dos segundos ("sleep(2000)"). Luego de esto, cuando el hilo llega a asignar un valor a la variable cont, la aplicación principal ejecutó "while ... do" hace dos segudos.

No me he explicado bien, es un problema sencillo, pero lo he encontrado difícil de explicar. Sin embargo, comparando ambos código, creo que puedo determinar cual es tu intención:
Código Delphi [-]
var
   hilo:TBarra;
begin
   cont := 0;
   hilo:=TBarra.Create(False);
   while cont<>1 do
   begin
      ProgressBar1.StepIt;
      form1.update;
      sleep(125);
   end;
end;
Utilizando el segundo código, con una ligerisimo modificación, lo que hace el anterior código es hacer mover el progressbar de la aplicación durante 2 segundos.

Saludos.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita