Created
June 5, 2014 03:33
-
-
Save Fhernd/e6ab3f81b94b79dd8102 to your computer and use it in GitHub Desktop.
Demostración de la creación de un delegado para un evento en 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 | |
{ | |
public class Metronomo | |
{ | |
//Delegado como marca por cada período del metrónomo: | |
public delegate void MarcadorEventHandler(Metronomo m, EventArgs e); | |
// Evento que responde a cambios en la marca: | |
public event MarcadorEventHandler Tic; | |
public EventArgs e = null; | |
// Inicia el conteo de marcas de período del metrónomo: | |
public void IniciarMetronomo() | |
{ | |
// Ciclo infinito para la actividad del metrónomo: | |
while (true) | |
{ | |
System.Threading.Thread.Sleep(2000); | |
if (Tic != null) | |
{ | |
// Invoca a los métodos subscriptos: | |
// this: Generador del evento. | |
// e: Información del evento. | |
Tic(this, e); | |
} | |
} | |
} | |
} | |
// 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 += new Metronomo.MarcadorEventHandler(Accion); | |
} | |
// Acción que ocurre por cada cambio en el metrónomo: | |
private void Accion(Metronomo m, EventArgs e) | |
{ | |
Console.WriteLine("Tic."); | |
} | |
} | |
public class Aplicación | |
{ | |
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.IniciarMetronomo(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment