Created
June 5, 2014 17:29
-
-
Save Fhernd/773bb43214b0cc9fbbf2 to your computer and use it in GitHub Desktop.
Demostración del uso del campo Empty de EventArgs 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 | |
{ | |
internal class Contador | |
{ | |
// Usamos el delegado incorporado en .NET para | |
// crear el evento de límite alcanzado: | |
public event EventHandler LimiteAlcanzadoEventHandler; | |
private int limite; | |
private int conteo; | |
public Contador(int limite) | |
{ | |
this.limite = limite; | |
} | |
public void Contar(int x) | |
{ | |
conteo += x; | |
if (conteo >= limite) | |
{ | |
OnLimiteAlcanzado (EventArgs.Empty); | |
} | |
} | |
protected virtual void OnLimiteAlcanzado(EventArgs e) | |
{ | |
// La creación de esta variable temporal nos servirá | |
// para asegurar colisiones en un ámbiente multihilo: | |
EventHandler tempEventHandler = LimiteAlcanzadoEventHandler; | |
// Probamos que en la pila de métodos asociados (listeners) | |
// haya por lo menos uno: | |
if ( tempEventHandler != null) | |
{ | |
tempEventHandler (this, e); | |
} | |
} | |
} | |
internal class Aplicacion | |
{ | |
public static void Main() | |
{ | |
Console.WriteLine(); | |
// Creamos una instancia de `Contador` y le pasamos | |
// un número aleatorio como argumento (límite): | |
Contador c = new Contador (new Random().Next(10)); | |
// Establecemos método de escucha: | |
c.LimiteAlcanzadoEventHandler += LimiteAlcanzado; | |
// Se repite siempre y cuando pulsemos la tecla 'a': | |
while (Console.ReadKey(true).KeyChar == 'a') | |
{ | |
Console.WriteLine("Incremento en 1"); | |
c.Contar (1); | |
} | |
} | |
public static void LimiteAlcanzado(object sender, EventArgs e) | |
{ | |
Console.WriteLine( "El límite ha sido alcanzado.\n"); | |
Environment.Exit(0); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment