C # - Evénements

Eventssont des actions de l'utilisateur telles que la pression de touches, les clics, les mouvements de la souris, etc., ou certaines occurrences telles que les notifications générées par le système. Les applications doivent répondre aux événements lorsqu'ils se produisent. Par exemple, les interruptions. Les événements sont utilisés pour la communication inter-processus.

Utilisation de délégués avec des événements

Les événements sont déclarés et déclenchés dans une classe et associés aux gestionnaires d'événements à l'aide de délégués au sein de la même classe ou d'une autre classe. La classe contenant l'événement est utilisée pour publier l'événement. C'est ce qu'on appelle lepublisherclasse. Une autre classe qui accepte cet événement est appelée lesubscriber classe. Les événements utilisent lepublisher-subscriber modèle.

UNE publisherest un objet qui contient la définition de l'événement et le délégué. L'association événement-délégué est également définie dans cet objet. Un objet de classe d'éditeur appelle l'événement et il est notifié aux autres objets.

UNE subscriberest un objet qui accepte l'événement et fournit un gestionnaire d'événements. Le délégué de la classe éditeur appelle la méthode (gestionnaire d'événements) de la classe d'abonné.

Déclarer des événements

Pour déclarer un événement à l'intérieur d'une classe, tout d'abord, vous devez déclarer un type de délégué pour le pair comme:

public delegate string BoilerLogHandler(string str);

puis déclarez l'événement à l'aide du event mot-clé -

event BoilerLogHandler BoilerEventLog;

Le code précédent définit un délégué nommé BoilerLogHandler et un événement nommé BoilerEventLog , qui appelle le délégué lorsqu'il est déclenché .

Exemple

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);
      }
   }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Welcome Tutorials Point