Actualizar UI desde clase...

23/09/2007 - 05:41 por Anibal | Informe spam
Tengo un formulario que instancia una clase y llama a un método de la misma
en un hilo que manipula archivos de texto.
Lo que quiero saber como hacer es que la clase le pase al formulario la ruta
de cada archivo que termina de procesar para mostrarlo en un TextBox.

Desde ya, muchas gracias.
 

Leer las respuestas

#1 Alberto Poblacion
23/09/2007 - 10:07 | Informe spam
"Anibal" wrote in message
news:eJe9vPZ$
Tengo un formulario que instancia una clase y llama a un método de la
misma en un hilo que manipula archivos de texto.
Lo que quiero saber como hacer es que la clase le pase al formulario la
ruta de cada archivo que termina de procesar para mostrarlo en un TextBox.



En el formulario:

public void MostrarArchivo(string ruta)
{
textbox1.Text = ruta;
}

En la clase que ejecuta el hilo separado:

private delegate void DelegadoNotificacion(string x);
private void NotificarAlForm(ruta)
{
DelegadoNotificacion del = new
DelegadoNotificacion(frm.MostrarArchivo);
frm.Invoke(del, new object[]{ruta});
}

En el código anterior, "frm" es la instancia del formulario a la que
quieres enviarle la notificación. Esta referencia habrás tenido que
hacersela llegar previamente a la clase que ejecuta el hilo, por ejemplo, a
través de su constructor, pasándole el "this" si la construyes desde el
propio formulario.
El método "Invoke" del formulario, al que estamos llamando en la anterior
rutina NotificarAlForm, permite hacer el "Marshalling" o "transporte" del
flujo de ejecución desde el hilo separado al hilo del formulario. Esto es
necesario porque los formularios en winforms no son multihilo, y el
interface de pantalla se corrompe si lo manipulas directamente desde otro
hilo.

Preguntas similares