fork download
  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. }
Time limit exceeded #stdin #stdout 15s 36440KB
stdin
Standard input is empty
stdout
Tic.
Tic.
Tic.
Tic.
Tic.
Tic.
Tic.
Tic.
Tic.
Tic.
Tic.
Tic.
Tic.
Tic.
Tic.