C # - Eventi

Eventssono azioni dell'utente come pressione di tasti, clic, movimenti del mouse, ecc. o alcune occorrenze come notifiche generate dal sistema. Le applicazioni devono rispondere agli eventi quando si verificano. Ad esempio, interrompe. Gli eventi vengono utilizzati per la comunicazione tra processi.

Utilizzo di delegati con eventi

Gli eventi vengono dichiarati e generati in una classe e associati ai gestori di eventi utilizzando delegati all'interno della stessa classe o di un'altra classe. La classe contenente l'evento viene utilizzata per pubblicare l'evento. Questo è chiamatopublisherclasse. Un'altra classe che accetta questo evento è chiamatasubscriber classe. Gli eventi utilizzano l'estensionepublisher-subscriber modello.

UN publisherè un oggetto che contiene la definizione dell'evento e del delegato. Anche l'associazione del delegato dell'evento è definita in questo oggetto. Un oggetto della classe editore richiama l'evento e viene notificato ad altri oggetti.

UN subscriberè un oggetto che accetta l'evento e fornisce un gestore di eventi. Il delegato nella classe editore richiama il metodo (gestore eventi) della classe del sottoscrittore.

Dichiarazione di eventi

Per dichiarare un evento all'interno di una classe, prima di tutto, devi dichiarare un tipo delegato per il pari come:

public delegate string BoilerLogHandler(string str);

quindi, dichiara l'evento utilizzando il event parola chiave -

event BoilerLogHandler BoilerEventLog;

Il codice precedente definisce un delegato denominato BoilerLogHandler e un evento denominato BoilerEventLog , che richiama il delegato quando viene generato.

Esempio

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

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Welcome Tutorials Point