EventHandler y multimedia.timer en c#

Iniciado por javierchu_cai, 12 Agosto 2009, 13:04 PM

0 Miembros y 1 Visitante están viendo este tema.

javierchu_cai

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:

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!!

raul338

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 ;)

javierchu_cai

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