C # - Ereignisse
Eventssind Benutzeraktionen wie Tastendruck, Klicks, Mausbewegungen usw. oder einige Vorkommnisse wie vom System generierte Benachrichtigungen. Anwendungen müssen auf Ereignisse reagieren, wenn sie auftreten. Zum Beispiel Interrupts. Ereignisse werden für die Kommunikation zwischen Prozessen verwendet.
Verwenden von Delegaten mit Ereignissen
Die Ereignisse werden in einer Klasse deklariert und ausgelöst und den Ereignishandlern mithilfe von Delegaten innerhalb derselben Klasse oder einer anderen Klasse zugeordnet. Die Klasse, die das Ereignis enthält, wird zum Veröffentlichen des Ereignisses verwendet. Dies nennt man daspublisherKlasse. Eine andere Klasse, die dieses Ereignis akzeptiert, heißtsubscriber Klasse. Ereignisse verwenden diepublisher-subscriber Modell.
EIN publisherist ein Objekt, das die Definition des Ereignisses und des Delegaten enthält. In diesem Objekt ist auch die Ereignis-Delegaten-Zuordnung definiert. Ein Publisher-Klassenobjekt ruft das Ereignis auf und wird an andere Objekte benachrichtigt.
EIN subscriberist ein Objekt, das das Ereignis akzeptiert und einen Ereignishandler bereitstellt. Der Delegat in der Herausgeberklasse ruft die Methode (Ereignishandler) der Abonnentenklasse auf.
Ereignisse deklarieren
Um ein Ereignis innerhalb einer Klasse zu deklarieren, müssen Sie zunächst einen Delegatentyp für das Gerade deklarieren als:
public delegate string BoilerLogHandler(string str);
Deklarieren Sie dann das Ereignis mit event Schlüsselwort -
event BoilerLogHandler BoilerEventLog;
Der vorhergehende Code definiert einen Delegaten mit dem Namen BoilerLogHandler und ein Ereignis mit dem Namen BoilerEventLog , das den Delegaten beim Auslösen aufruft.
Beispiel
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);
}
}
}
Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:
Welcome Tutorials Point