События (Руководство по программированию в C#)
Обновлен: Ноябрь 2007
События позволяют классу или объекту уведомлять другие классы или объекты о возникновении каких-либо ситуаций. Класс, отправляющий (или вызывающий) событие, называется издателем, а классы, принимающие (или обрабатывающие) событие, называются подписчиками.
В C# в стандартном приложении Windows Forms или веб-приложении пользователь подписывается на события, вызываемые элементами управления, такими как кнопки и поля со списками. Для просмотра событий, публикуемых элементом управления, и выбора некоторых из них для обработки можно воспользоваться средой IDE Visual C#. IDE автоматически добавит пустой метод обработчика событий и код, необходимый для подписки на событие. Дополнительные сведения см. в разделе Практическое руководство. Подписка и отмена подписки на события (Руководство по программированию в C#).
Общие сведения о событиях
События имеют следующие свойства.
Издатель определяет момент вызова события, подписчики определяют предпринятое ответное действие.
У события может быть несколько подписчиков. Подписчик может обрабатывать несколько событий от нескольких издателей.
События, не имеющие подписчиков, никогда не возникают.
Обычно события используются для оповещения о действиях пользователя, таких как нажатия кнопок или выбор меню и их пунктов в графическом пользовательском интерфейсе.
Если событие имеет несколько подписчиков, то при его возникновении происходит синхронный вызов обработчиков событий. Сведения об асинхронном вызове событий см. в разделе Асинхронный вызов синхронных методов.
События можно использовать для синхронизации потоков.
В библиотеке классов .NET Framework в основе событий лежит делегат EventHandler и базовый класс EventArgs.
Связанные разделы
Дополнительные сведения см. в следующих разделах:
Практическое руководство. Реализация событий интерфейса (Руководство по программированию в C#)
Синхронизация потоков (Руководство по программированию на C#)
Спецификация языка C#
Дополнительные сведения см. в следующих разделах документа Спецификация языка C#:
1.6.7.4 События
10.2.9.2 Имена членов, зарезервированные для событий
10.8 События
13.2.3 События интерфейса
См. также
Основные понятия
Руководство по программированию в C#
Ссылки
Делегаты (руководство по программированию на C#)
Другие ресурсы
Создание обработчиков событий в Windows Forms
Многопоточное программирование с использованием асинхронной модели, основанной на событиях