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