Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace Articulos.Cap04
- {
- // Clase contenedora de los datos del evento tic,
- // precisamente la hora:
- public class HoraTicEventArgs : EventArgs
- {
- private DateTime hora;
- public DateTime Hora
- {
- set
- {
- hora = value;
- }
- get
- {
- return hora;
- }
- }
- }
- public class Metronomo
- {
- //Delegado como marca por cada período del metrónomo:
- public delegate void TicEventHandler(Metronomo m, HoraTicEventArgs e);
- // Evento que responde a cambios en la marca:
- public event TicEventHandler Tic;
- // Inicia el conteo de marcas de período del metrónomo:
- public void Iniciar()
- {
- // Ciclo infinito para la actividad del metrónomo:
- while (true)
- {
- System.Threading.Thread.Sleep(2000);
- if (Tic != null)
- {
- HoraTicEventArgs t = new HoraTicEventArgs();
- // Obtiene la hora actual:
- t.Hora = DateTime.Now;
- // Invoca a los métodos subscriptos:
- // this: Generador del evento.
- // e: Información del evento.
- Tic(this, t);
- }
- }
- }
- }
- // Subscribe o cliente de la clase publicadora `Metronomo`:
- public class Subscriptor
- {
- // Se subscribe para detectar los cambios del metrónomo:
- public void Subscribir(Metronomo m)
- {
- m.Tic += Accion;
- }
- // Acción que ocurre por cada cambio en el metrónomo:
- public void Accion(Metronomo m, HoraTicEventArgs e)
- {
- Console.WriteLine("Tic a las {0}", e.Hora.ToString());
- }
- }
- public class Aplicacion
- {
- public static void Main()
- {
- // Instancia del broadcaster `Metronomo`:
- Metronomo m = new Metronomo();
- // Subscriptor interesado en escuchar al `Metronomo`:
- Subscriptor l = new Subscriptor();
- // Subscripción:
- l.Subscribir(m);
- m.Iniciar();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement