Skip to content

Instantly share code, notes, and snippets.

@Fhernd
Created June 6, 2014 15:55
Show Gist options
  • Save Fhernd/bae18c9fc8357e9ba4c9 to your computer and use it in GitHub Desktop.
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#.
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