Что такое События в C#?

События-это не просто действия пользователя. Например

  1. Когда вы щелкаете мышью-это события щелчка мыши.
  2. Когда вы нажимаете любую клавишу на клавиатуре – это события нажатия клавиш
  3. Когда вы обновляете свою веб-страницу – это события загрузки страницы
  4. При перемещении курсора мыши — это наведение мыши события и т.д.

Поэтому, когда вы предпринимаете какие-либо действия, такие как нажатие клавиши, движения мыши, щелчки и т. д., возникает событие. Позвольте мне прояснить это подробнее. Например, вы заполнили онлайн-форму и нажмите на кнопку Отправить.

  1. В фоновом button_click()режиме событие возникло.
  2. Это событие вызывает и выполняет связанную функцию Submit_Click().
  3. Эта функция обрабатывает ваш запрос и отправляет информацию о странице в базу данных.

Как события работают с делегатами?

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

Что такое модель издатель-подписчик?

В любом случае есть две части программы обработки событий. Одна часть является издателем, который содержит определение событий и делегатов, а другая часть-подписчиком, который принимает событие и предоставляет обработчик событий.

  1. Событие создается с помощью ключевого слова event.
  2. Событие не имеет возвращаемого типа и всегда является пустым.
  3. Все события основаны на делегатах.
  4. Все опубликованные события должны иметь объект прослушивания.
  5. Все события должны быть определены, начиная с ключевого слова «On».

Давайте разберемся во всех этих теориях на примере программирования 
Перед просмотром примеров программирования вы должны знать последовательные шаги для управления событиями. 

Шаг 1: Определение делегата 
Шаг 2: Определение события с тем же именем делегатов.
Шаг 3: Определите обработчик событий, которые отвечают при возникновении события.
Шаг 4: Вы должны иметь метод, готовый для делегатов.

Эта программа просто добавляет два числа. Единственное условие — если сумма чисел нечетна, он запускает событие, которое печатает сообщение с помощью делегатов.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
     
    namespace event_programming
    {
        //This is Subscriber Class
        class Program
        {
            static void Main(string[] args)
            {
                AddTwoNumbers a = new AddTwoNumbers();
                //Event gets binded with delegates
                a.ev_OddNumber += new AddTwoNumbers.dg_OddNumber(EventMessage);
                a.Add();
                Console.Read();
            }      
            //Delegates calls this method when event raised.  
            static void EventMessage()
            {
                Console.WriteLine("********Event Executed : This is Odd Number**********");
            }
        }
        //This is Publisher Class
        class AddTwoNumbers
        {        
            public delegate void dg_OddNumber(); //Declared Delegate     
            public event dg_OddNumber ev_OddNumber; //Declared Events
     
            public void Add()
            {
                int result;
                result = 5 + 4;
                Console.WriteLine(result.ToString());
                //Check if result is odd number then raise event
                if((result % 2 != 0) && (ev_OddNumber != null))
                {
                    ev_OddNumber(); //Raised Event
                }          
            }
        }
    }

1

Смотрите эту фотографию. На коде есть какая-то маркировка. Мы пройдем через маркировку и разберемся в самом процессе.

  1. Созданный Делегат
public delegate void dg_OddNumber();

2. Создано Событие

public event dg_OddNumber ev_OddNumber;

3. ev_OddNumber() событие будет выполнено, если найдено нечетное число.

4. В классе AddTwoNumbers есть функция void Add(), которая добавляет два числа. Если сумма числа Нечетна, то оно подняло ev_OddNumberсобытие основная функция, это ev_OddNumberобработчик событий вызывает делегат

a.ev_OddNumber +=  new  AddTwoNumbers .dg_OddNumber(EventMessage);

5. Затем, наконец, делегат выполняет функцию.

static void EventMessage()
 {
 Console.WriteLine("********Event Executed : This is Odd Number**********");
 }

Еще больше примеров с событиями у нас сайте: пример 1 пример 2

Обновлено: 12.01.2020 — 10:52

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.