Foros del Web » Programación para mayores de 30 ;) » .NET »

C# 2.0 (Delegados, Eventos y Controles)

Estas en el tema de C# 2.0 (Delegados, Eventos y Controles) en el foro de .NET en Foros del Web. Hola buenas noches gente, Tengo un pequeño problema que por favor, espero puedan ayudarme a resolverlo por que no sé como hacerlo. Tengo una clase, ...
  #1 (permalink)  
Antiguo 15/01/2007, 17:37
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
C# 2.0 (Delegados, Eventos y Controles)

Hola buenas noches gente,

Tengo un pequeño problema que por favor, espero puedan ayudarme a resolverlo por que no sé como hacerlo.


Tengo una clase, la cual tiene un evento usado através de un delegado:
Código:
class ClsInternet
{
        public delegate void DelegadoEntradaMensaje(string textoRecibido);
        public event DelegadoEntradaMensaje EntradaMensaje;
.
.
.
.
.
.
//Y en un momento ejecuto el evento:
            if (EntradaMensaje != null)
                EntradaMensaje(txtDatosRecibidos);
}

Vale, este evento me funciona perfectamente, lo llamo desde un formulario de la siguiente forma y el texto lo recibo perfectamente, incluso si hago un MessageBox me muestra el texto. Acontinuación muestro el codigo del formulario.
Código:
ClsUtilidades.ClsInternet obj;
obj = new ClsInternet();
obj.EntradaMensaje += new ClsInternet.DelegadoEntradaMensaje(obj_EntradaMensaje);

obj.IniciarServidor();


        private void obj_EntradaMensaje(string textoRecibido)
        {            
            lstLista.Items.Add(textoRecibido);
        }
Bien, pues como he dicho, "textoRecibido" tiene el valor que tiene que tener, me está llegando perfectamente, si hago un msgbox de ese valor, me muestra el contenido. Pero al intentar agregar el String al ListBox tal y como está en el código me salta la siguiente excepción:

"Operación no válida a través de subprocesos: Se tuvo acceso al control 'lstLista' desde un subproceso distinto a aquel en que lo creó."

En fin... por favor, si alguien me puede ayudar se lo agradecería, por que no sé resolver el problema, la verdad.
__________________
Charlie.
  #2 (permalink)  
Antiguo 15/01/2007, 20:17
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Re: C# 2.0 (Delegados, Eventos y Controles)

Ese problema generalmente se muestra cuando la aplicación está en modo debug y hace uso de hebras, revisa la documentación o el siguiente enlace si quieres ver una explicación más profunda:
http://weblogs.asp.net/justin_rogers...es/126345.aspx
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #3 (permalink)  
Antiguo 16/01/2007, 02:16
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Re: C# 2.0 (Delegados, Eventos y Controles)

He encontrado esta solución:
CheckForIllegalCrossThreadCalls = false;

Funcionar funciona, aunque creo que no es la más óptima y eficiente. Poniendo esto en el evento Load del formulario o despues del método IniticializeComponent y ya lo tendremos resuelto.

Más información:
http://www.elguille.info/NET/vs2005/..._otro_hilo.htm
__________________
Charlie.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:24.