Ver Mensaje Individual
  #11  
Antiguo 05-12-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.333
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Es normal que no puedas escribir nada.

Tal y como te he comentado antes, lo que pones a ejecutar en el synchronize, es código que no se ejecuta en paralelo.
Para que me entiendas es algo así. Cuando llamas al synchronize, el thread detiene el programa original, ejecuta lo que hay dentro del synchronize y luego vuelve a el control al programa principal.

Por eso he comentado que en el synchronize hay que poner el mínimo código posible.

Según la explicación anterior, tú has hecho justo TODO lo contrario. Has colocado TODO el código del hilo en el synchronize. Por lo tanto tu hilo, tal y como está, no saca ningún provecho a las ventajas de ejecutar código en paralelo.

Cambia tu código por este, y aprecia las diferencias:

Código Delphi [-]
//Thilo
procedure tHilo.execute;
var
  i:integer;
begin

  // para inicializar el Max
  synchronize(updatEdit);

  for i := 0 to form1.progressBar1.max -1 do begin
    cont := i;
    synchronize(updatEdit);
 
    // para que te de tiempo a hacer algo....
    sleep(10);
  end;
end;

procedure tHilo.updatEdit;
begin
  form1.progressBar1.max:= 1000;
  form1.progressBar1.position:= cont;
end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita