Created
June 6, 2014 15:55
-
-
Save Fhernd/bae18c9fc8357e9ba4c9 to your computer and use it in GitHub Desktop.
Aplicación de demostración de uso de eventos en el lenguaje de programación C#.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment