Cita:
Empezado por danielmj
a ver segun entiendo, en un hilo no deben haber referencias a componentes visuales, pero en ese caso, si las operaciones de un procedimiento incluyen que se vaya mostrando información ¿como seria? ¿el hilo debería devolver el control a un procedimiento para "pintar" la informacion en una etiqueta (por ejemplo) y luego este procedimiento devolver el control al hilo para continuar? ¿eso sería así, pasandose el control de uno a otro hasta terminar? iba a poner un ejemplo real de la situación que tengo entre manos, pero son muchas lineas y no me deja, así que lo adjunto a este mensaje.
Tengo este procedimiento...
Código Delphi [-]Procedure TPrincipal.Button1Click(Sender: TObject);
begin
TrocearArchivo(labEdit1.Text,2048);
button2.Enabled:= true;
end;
... que hace la llamada al procedimiento adjunto, ¿que parte del procedimiento debe estar fuera del hilo y cual dentro?
Un saludo y gracias.
|
Lo primero decir, que si no lees las cosas atentamente no llegaremos a ningún sitio, pues no nos vamos a entender...
Yo no he dicho que:
"en un hilo no deben haber referencias a componentes visuales"
Mis palabras fueron las siguientes:
Eso se traduce en que desde dentro de un hilo
no puedes acceder "alegremente" a componentes y código que tengas fuera de él..."
"Es decir, desde dentro del hilo,
NO PUEDES llamar "directamente" a un botón del formulario (Form1.Button4.Enabled)...."
"...por lo tanto tenemos que asegurarnos que cuando accedemos desde el thread a "elementos externos" lo hagamos de forma exclusiva."
Creo que la diferencia es evidente.
SI se puede acceder a elementos externos como componentes, pero NO SE PUEDER HACER DIRECTAMENTE. Debes hacerlo utilizando Synchronize.