C # - Eventos

Eventsson acciones del usuario como presionar teclas, clics, movimientos del mouse, etc., o alguna ocurrencia como notificaciones generadas por el sistema. Las aplicaciones deben responder a los eventos cuando ocurren. Por ejemplo, interrumpe. Los eventos se utilizan para la comunicación entre procesos.

Usar delegados con eventos

Los eventos se declaran y se generan en una clase y se asocian con los controladores de eventos mediante delegados dentro de la misma clase o alguna otra clase. La clase que contiene el evento se usa para publicar el evento. Esto se llamapublisherclase. Alguna otra clase que acepta este evento se llamasubscriber clase. Los eventos usan elpublisher-subscriber modelo.

UNA publisheres un objeto que contiene la definición del evento y el delegado. La asociación evento-delegado también se define en este objeto. Un objeto de clase de editor invoca el evento y se notifica a otros objetos.

UNA subscriberes un objeto que acepta el evento y proporciona un controlador de eventos. El delegado de la clase de publicador invoca el método (controlador de eventos) de la clase de suscriptor.

Declaración de eventos

Para declarar un evento dentro de una clase, en primer lugar, debe declarar un tipo de delegado para el par como:

public delegate string BoilerLogHandler(string str);

luego, declare el evento usando el event palabra clave -

event BoilerLogHandler BoilerEventLog;

El código anterior define un delegado llamado BoilerLogHandler y un evento llamado BoilerEventLog , que invoca al delegado cuando se genera .

Ejemplo

using System;

namespace SampleApp {
   public delegate string MyDel(string str);
	
   class EventProgram {
      event MyDel MyEvent;
		
      public EventProgram() {
         this.MyEvent += new MyDel(this.WelcomeUser);
      }
      public string WelcomeUser(string username) {
         return "Welcome " + username;
      }
      static void Main(string[] args) {
         EventProgram obj1 = new EventProgram();
         string result = obj1.MyEvent("Tutorials Point");
         Console.WriteLine(result);
      }
   }
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Welcome Tutorials Point