none
Llamar a evento de un formulario RRS feed

  • Pregunta

  •  

    Bueno es un poco raro lo que quiero preguntar, por que rompe un poco con lo establecido en herencia de objetos. 

    Explico :

       Tengo un formulario Frm_Control (que controla varios objetos que controlan datos de la red) como son sensor1, sensor2 , antena1, antena2. 

       Este formulario crea un objeto de las clases sensor1,sensor2,antena1,antena2

       Dentro de cada clase de sensor1,sensor2,antena1,antena2 existe un método para conectarse por tcp/ip a la espera de datos. Cuando llega un dato nuevo almacena la variable. y este método tiene que devolverle al formulario el dato a................... aquí es donde entra mi pregunta.... ¿a un evento? ¿cómo lo creo ?¿Como lo llamo?

    la historia sería :Dato --->llega a objeto antena1.Recibirdatos --->se la envía a --->Evento llegan datos del formulario Control.

    A su vez también pueden llegar datos del objeto antena2.recibirdatos que también llamara a un evento del formulario Control.Recibirdatos

    A su vez el objeto sensor1 y sensor 2 estarán haciendo lo mismo

    Nota :Trabajo en visual studio 2010

     


    miércoles, 18 de mayo de 2011 8:26

Respuestas

Todas las respuestas

  • Mi sugerencia sería publicar un evento en cada una de las clases (con "public event ..."), que se dispararia cada vez que se reciban datos por tcp/ip. El formulario se suscribiría a estos eventos (con += en C#, o AddHandler en VB), de forma que iría recibiendo esos datos cuando las clases disparen su correspondiente evento público.

    Ojo al tema de funcionamiento en multihilo. Si las clases son asíncronas (usando distintos hilos), ten presente que al recibirse los datos en el formulario principal no se pueden actualizar los datos en pantalla desde otro hilo, y hay que usar alguno de los mecanismos de transporte entre hilos (tales como el método Invoke) para poder actualizar la interfaz de pantalla. Este problema lo tendrás en todos los casos, tanto si usas eventos para pasar la información desde las clases al formulario como si usas delegados o usas métodos de retrollamada a través de una referencia al formulario. Todos los mecanismos requieren transportar la ejecución al hilo principal antes de actualizar la interfaz de usuario.

    miércoles, 18 de mayo de 2011 9:49
  • Nota:Trabajo en VB

      Has dado en el clavo, pensaba hacerlo con handler pero no sabía bien como utilizarlo, p eso quería un pequeño ejemplo.

      Has dado también en el clavo al pensar que iba a utilizar multihilo, pero estaba estudiando como hacerlo con lo que unas líneas de código no vendrían mal.

      Pero gracias Alberto tu contestación me ha reforzado la idea y los problemas que pensaba que me iba a dar.

    ¿Más ayuda?

    Esto esta muy bien por si alguién me lee después :

    http://msdn.microsoft.com/en-us/library/ck8bc5c6(v=VS.100).aspx

    http://msdn.microsoft.com/es-es/library/k2kt7a7y(v=VS.90).aspx
    • Editado Amigozgz miércoles, 18 de mayo de 2011 12:02
    miércoles, 18 de mayo de 2011 11:03
  • Esto esta muy bien por si alguién me lee después :

    http://msdn.microsoft.com/en-us/library/ck8bc5c6(v=VS.100).aspx


    Precisamente te iba a proponer otro artículo parecido, también de MSDN:

    http://msdn.microsoft.com/es-es/library/ms171728.aspx

     

    • Marcado como respuesta Amigozgz jueves, 19 de mayo de 2011 10:48
    miércoles, 18 de mayo de 2011 11:26
  • Voy a cerrar este hilo y ser más explicito. Gracias por la ayuda.
    jueves, 19 de mayo de 2011 10:48