Advertisement
Fhernd

UsoEventArgsEmpty.cs

Jul 30th, 2014
567
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.11 KB | None | 0 0
  1. using System;
  2.  
  3. namespace Articulos.Cap04
  4. {
  5.     internal class Contador
  6.     {
  7.         // Usamos el delegado incorporado en .NET para
  8.         // crear el evento de límite alcanzado:
  9.         public event EventHandler LimiteAlcanzadoEventHandler;
  10.    
  11.         private int limite;
  12.         private int conteo;
  13.        
  14.         public Contador(int limite)
  15.         {
  16.             this.limite = limite;
  17.         }
  18.        
  19.         public void Contar(int x)
  20.         {
  21.             conteo += x;
  22.            
  23.             if (conteo >= limite)
  24.             {
  25.                 OnLimiteAlcanzado (EventArgs.Empty);
  26.             }
  27.         }
  28.        
  29.         protected virtual void OnLimiteAlcanzado(EventArgs e)
  30.         {
  31.             // La creación de esta variable temporal nos servirá
  32.             // para asegurar colisiones en un ámbiente multihilo:
  33.            
  34.             EventHandler tempEventHandler = LimiteAlcanzadoEventHandler;
  35.            
  36.             // Probamos que en la pila de métodos asociados (listeners)
  37.             // haya por lo menos uno:
  38.             if ( tempEventHandler != null)
  39.             {
  40.                 tempEventHandler (this, e);
  41.             }
  42.         }
  43.     }
  44.    
  45.     internal class Aplicacion
  46.     {
  47.         public static void Main()
  48.         {
  49.             Console.WriteLine();
  50.            
  51.             // Creamos una instancia de `Contador` y le pasamos
  52.             // un número aleatorio como argumento (límite):
  53.             Contador c = new Contador (new Random().Next(10));
  54.            
  55.             // Establecemos método de escucha:
  56.             c.LimiteAlcanzadoEventHandler += LimiteAlcanzado;
  57.            
  58.             // Se repite siempre y cuando pulsemos la tecla 'a':
  59.             while (Console.ReadKey(true).KeyChar == 'a')
  60.             {
  61.                 Console.WriteLine("Incremento en 1");
  62.                 c.Contar (1);
  63.             }
  64.         }
  65.        
  66.         public static void LimiteAlcanzado(object sender, EventArgs e)
  67.         {
  68.             Console.WriteLine( "El límite ha sido alcanzado.\n");
  69.             Environment.Exit(0);
  70.         }
  71.     }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement