С# — События
События действия пользователя, такие как нажатие клавиш, клики, движения мыши и т. д., или некоторые события, такие как уведомления, созданные системой. Приложения должны реагировать на события, когда они происходят. Например, прерывания. События используются для межпроцессного взаимодействия.
Использование делегатов с событиями
События объявляются и вызываются в классе и связываются с обработчиками событий с использованием делегатов в том же или другом классе. Класс, содержащий событие, используется для публикации события. Это называется издатель учебный класс. Некоторый другой класс, принимающий это событие, называется подписчиком . учебный класс. События используют издатель-подписчик модель.
издатель — это объект, содержащий определение события и делегата. В этом объекте также определена ассоциация делегата события. Объект класса издателя вызывает событие и уведомляет об этом другие объекты.
подписчик это объект, который принимает событие и предоставляет обработчик события. Делегат в классе издателя вызывает метод (обработчик событий) класса подписчика.
Объявление событий
Чтобы объявить событие внутри класса, прежде всего, вы должны объявить тип делегата для даже как:
public delegate string BoilerLogHandler(string str);
затем объявите событие с помощью event ключевое слово –
event BoilerLogHandler BoilerEventLog;
Предыдущий код определяет делегата с именем BoilerLogHandler. и событие под названием BoilerEventLog , который вызывает делегат при его вызове.
Пример
Живая демонстрация
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);
}
}
}
Когда приведенный выше код скомпилирован и выполнен, он дает следующий результат —
Welcome Tutorials Point
Язык C