Advertisement
Fhernd

Metronomo.cs

Jul 29th, 2014
3,712
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.92 KB | None | 0 0
  1. using System;
  2.  
  3. namespace Articulos.Cap04
  4. {
  5.     public class Metronomo
  6.     {
  7.         //Delegado como marca por cada período del metrónomo:
  8.         public delegate void MarcadorEventHandler(Metronomo m, EventArgs e);
  9.        
  10.         // Evento que responde a cambios en la marca:
  11.         public event MarcadorEventHandler Tic;
  12.        
  13.         public EventArgs e = null;
  14.        
  15.         // Inicia el conteo de marcas de período del metrónomo:
  16.         public void IniciarMetronomo()
  17.         {
  18.             // Ciclo infinito para la actividad del metrónomo:
  19.             while (true)
  20.             {
  21.                 System.Threading.Thread.Sleep(2000);
  22.                
  23.                 if (Tic != null)
  24.                 {
  25.                     // Invoca a los métodos subscriptos:
  26.                     // this: Generador del evento.
  27.                     // e: Información del evento.
  28.                     Tic(this, e);
  29.                 }
  30.             }
  31.         }
  32.     }
  33.    
  34.     // Subscribe o cliente de la clase publicadora `Metronomo`:
  35.     public class Subscriptor
  36.     {
  37.         // Se subscribe para detectar los cambios del metrónomo:
  38.         public void Subscribir(Metronomo m)
  39.         {
  40.             m.Tic += new Metronomo.MarcadorEventHandler(Accion);
  41.         }
  42.        
  43.         // Acción que ocurre por cada cambio en el metrónomo:
  44.         private void Accion(Metronomo m, EventArgs e)
  45.         {
  46.             Console.WriteLine("Tic.");
  47.         }
  48.     }
  49.    
  50.     public class Aplicación
  51.     {
  52.         public static void Main()
  53.         {
  54.             // Instancia del broadcaster `Metronomo`:
  55.             Metronomo m = new Metronomo();
  56.            
  57.             // Subscriptor interesado en escuchar al `Metronomo`:
  58.             Subscriptor l = new Subscriptor();
  59.            
  60.             // Subscripción:
  61.             l.Subscribir(m);
  62.            
  63.             m.IniciarMetronomo();
  64.         }
  65.     }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement