Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: javierchu_cai en 12 Agosto 2009, 13:04 pm



Título: EventHandler y multimedia.timer en c#
Publicado por: javierchu_cai en 12 Agosto 2009, 13:04 pm
Buenas!!

Suelo leer mucho en vuestro foro, pero hasta ahora no me había decidido a registrarme. Aprovecho que lo he hecho para ver si me podéis dar una ayuda con este tema.

Estoy trabajando con un programilla que se comunica en tiempo real (o se supone que debe hacerlo  :rolleyes:) con un robot kuka, envíando y recibiendo sockets. Tengo dos programas, el servidor y el cliente. En el cliente hay una parte del código que no termino de entender del todo:

Código:
if (checkBoxMultimediaTimer.Checked)
            {
                timerClient.Enabled = false;
                timerMultimedia = new Multimedia.Timer();
                timerMultimedia.Mode = Multimedia.TimerMode.Periodic;
                timerMultimedia.Period = Convert.ToInt32(textBoxTimerInterval.Text); // 20 ms period
                timerMultimedia.Resolution = 1; // 1 ms resolution
                timerMultimedia.SynchronizingObject = this;
                timerMultimedia.Tick += new System.EventHandler(timerMultimedia_Tick);
                timerMultimedia.Start();
            }
            else
                timerClient.Enabled = true;

Sé que la clase multimedia.timer es para programar eventos que suceden cada cieto tiempo, y más o menos entiendo los distintos atributos y métodos que usa.

Pero mi duda viene con la siguiente expresión:

timerMultimedia.Tick += new System.EventHandler(timerMultimedia_Tick). En conjunto me imagino que lo que se le está diciendo al programa es que cada cierto tiempo ejecute el evento timermultimedia_tick, pero me gustaría saber como funciona exactamente esta expresión por que también he visto que por ahí se usa -= en vez de += para eliminar eventos. ¿Debo agregar el evento cada vez que se ejecuta por que este se elimina? ¿ o se mantiene el evento? ¿por que += en vez de -=?

He estado buscando en msdn y en google pero no he encontrado mucho...

Un slaudo y muchas gracias por vuestro tiempo!!


Título: Re: EventHandler y multimedia.timer en c#
Publicado por: raul338 en 12 Agosto 2009, 23:41 pm
Busca "usar delegados en C#" para mas info  :P

Se usa los delegados como si fuesen variables de eventos(no como en VB.NET, que se usa el modificador Event)

¿Debo agregar el evento cada vez que se ejecuta por que este se elimina?
No, para agregar se uitliza el operador += y se llamara al metodo o manejador tantas veces sea llamado hasta utilizar -= con el mismo manejador.

Puede ser complicado de entender, pero es un mini-super-resumen xD....busca delegados y encontraras muchisima mas informacion ;)


Título: Re: EventHandler y multimedia.timer en c#
Publicado por: javierchu_cai en 13 Agosto 2009, 10:27 am
Ok, he buscado lo de los delegados y con eso y lo que me has dicho ya lo he entendido todo.

Muchísimas gracias por tu ayuda!!   :D