Учебники

C # — События

События — это действия пользователя, такие как нажатие клавиш, щелчки, движения мыши и т. Д., Или такие события, как системные уведомления. Приложения должны реагировать на события, когда они происходят. Например, прерывает. События используются для межпроцессного взаимодействия.

Использование делегатов с событиями

События объявляются и генерируются в классе и связываются с обработчиками событий с использованием делегатов в том же классе или каком-либо другом классе. Класс, содержащий событие, используется для публикации события. Это называется классом издателя . Другой класс, который принимает это событие, называется классом подписчика . События используют модель издатель-подписчик .

Издатель — это объект, который содержит определение события и делегата. Ассоциация события-делегата также определена в этом объекте. Объект класса издателя вызывает событие и уведомляется о других объектах.

Подписчик — это объект, который принимает событие и предоставляет обработчик события. Делегат в классе издателя вызывает метод (обработчик события) класса подписчика.

Объявление событий

Чтобы объявить событие внутри класса, сначала должен быть объявлен тип делегата для события. Например,

public delegate string MyDel(string str);

Далее само событие объявляется с использованием ключевого слова event

event MyDel MyEvent;

Предыдущий код определяет делегат с именем BoilerLogHandler и событие с именем BoilerEventLog , которое вызывает делегат при его возникновении.

пример

Live Demo

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);
      }
   }
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —