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.

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 Anibal
23/09/2007 - 22:48 | Informe spam
Funcionó Perfecto, Muchisimas gracias.




"Alberto Poblacion"
escribió en el mensaje news:e256Kjb$
"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.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida