События в C#: Обработка пользовательских действий и системных уведомлений
Что такое события
События — это действия пользователя (нажатия клавиш, клики мыши, перемещения курсора) или системные уведомления. Приложения должны реагировать на события в момент их возникновения. Например, прерывания. События используются для межпроцессного взаимодействия.
Использование делегатов с событиями
События объявляются и инициируются (raise) в классе и связываются с обработчиками событий с помощью делегатов в том же или в другом классе. Класс, содержащий событие, публикует его и называется издателем (publisher). Класс, который принимает событие, называется подписчиком (subscriber). События реализуют модель издатель-подписчик.
- Издатель — объект, содержащий определение события и делегата. Связь событие-делегат также определяется здесь. Объект издателя инициирует событие, уведомляя другие объекты.
- Подписчик — объект, принимающий событие и предоставляющий обработчик. Делегат в классе издателя вызывает метод (обработчик) класса подписчика.
Объявление событий
Для объявления события внутри класса сначала нужно объявить тип делегата для этого события:
public delegate string BoilerLogHandler(string str);
Затем объявите само событие с помощью ключевого слова event:
event BoilerLogHandler BoilerEventLog;
Этот код определяет делегат BoilerLogHandler и событие BoilerEventLog, которое вызывает делегат при срабатывании.
Пример
Live Demousing 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
- Классы и объекты в C#: Фундаменты надёжного ООП
- Модификаторы доступа в C#: public, private, protected, internal и другие
- Ключевое слово static в C#: статические переменные, методы и классы
- Абстрактные классы и методы в C#: практическое руководство
- Вложенные классы в C#: определение, использование и наследование
- Частичные классы и методы в C#: понимание и применение
- Sealed-классы и sealed-методы в C#: когда использовать, примеры и повышение безопасности кода
- Полиморфизм в C++: практическое руководство
- Абстракция данных в C++: разделение интерфейса и реализации
- Инкапсуляция данных в C++: защита вашего кода