Eruano's Blog

Simple y con foco… como debe ser!

Manejar conflicto de Hilos, Windows Forms C#

leave a comment »

Teniendo aplicaciones que requieren de dos o mas hilos es frecuente encontrarse con conflictos de hilos, estos conflictos son comunmente generados porque un hilo intenta acceder a uno o mas recursos de otro hilo. En este caso se puede aplicar esta solucion para manejar el conflicto.

En el siguiente ejemplo se pretende modificar el mensaje de un Label desde un hilo cualquiera.

// Se declara el delegado para el manejo del conflicto public delegate void DelegadoMensaje (String mensaje) ;
class MiClase{
// Se declara el evento que posteriormente sera el encargado de llamar a la funcion que manejara el conflicto
private event DelegadoMensaje EventoMostrarMensaje;
// Constructor de la clase, asigna al evento la funcion que debe manejar el mensaje
public MiClase(){
EventoMostrarMensaje += new DelegadoMensaje(VeElMensaje);
}
// Esta funcion se encarga de manejar el conflicto mediante la invocacion de un nuevo delegado
public void VeElMensaje(string Mensaje){
DelegadoMensaje Mi_Conectar_Resultado;
Mi_Conectar_Resultado = new DelegadoMensaje(VerResultado);
this.Invoke(Mi_Conectar_Resultado, new Object[] { Mensaje });
}
// Esta funcion modifica los recursos
public void VerResultado(String mensaje){
this.lblRecurso.Text = mensaje;
}
// Esta funcion es la que se invoca desde cualquier otro hilo
public void ColocarMensaje(String mensaje){
EventoMostrarMensaje(mensaje);
}
public static void main(String args[] ){
Thread miHilo = new Thread(new ThreadStart(MiFuncion));
miHilo.start();
}
 // Esta funcion representa el hilo que intenta acceder a los recursos de otro hilo
public void MiFuncion(){
ColocarMensaje("HOLA MUNDO!");
}
}
Espero que sea de ayuda.
Saludos

Written by eruano

8 diciembre 2009 a 6:57 pm

Publicado en Visual Studio

Tagged with , ,

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: