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