Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 126

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 120 121 122 123 124 125 < 126 > 127 128 129 130 131 132 .. 404 >> Следующая


Что такое событие?

События похожи на исключительные ситуации в том смысле, что они создаются (генерируются) объектами, и у нас имеется возможность задать код, который будет выполняться при их наступлении. Между ними, однако, существует несколько важных отличий. Наиболее существенным является отсутствие конструкции, предназначенной для обработки событий и эквивалентной конструкции try.. .catch. Вместо этого на события необходимо подписываться. Подписаться на некоторое событие — означает указать код, который должен выполняться при наступлении данного события и который имеет форму обработчика событий.

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

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

Именно благодаря тому, что делегаты используются при обработке событий, они оказываются такими полезными; именно по этой причине мы посвятили некоторое время их изучению в главе 6; возможно, вы пожелаете перечитать
268

Глава 12

Прнложаюс*

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

Последовательность действий при обработке событий примерно такова: Во-первых, и приложении создается объект, который может генерировать некоторое событие. В качестве примера рассмотрим приложение, которое занимается немедленной отправкой сообщений, а создаваемый им объект представляет собой

соединение с удаленным пользователем (см. рис. слева).

Создает

Со«днн«кн*

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

Затем приложение подписывается на событие. Приложение для немедленной отправки сообщений может добиться этого путем определения функции, допускающей использование с типом делегата, задаваемым данным событием, и передающей событию ссылку на эту функцию. В качестве такой функции-обработчика события может использоваться метод или какой-либо другой объект — скажем, объект, представляющий некоторое устройство вывода сообщений, предназначенное для немедленного вывода сообщений при их поступлении (см. рис, справа).

Когда возникает некоторое событие, подписавшийся на него обработчик получает уведомление. При поступлении сообщения через соединение осуществляется вызов метода — обработчика события на объект устройства вывода. Поскольку здесь применяется стандартный метод, то объект, сгенерировавший событий, имеет возможность передать любую относящуюся к данному событию информацию посредством параметров, что делает аппарат событий весьма гибким, В данном примере одним из параметров может быть текст, используемой для вывода сообщения посредством обработчика события на объект, представляющий устройство вывода (см. рис. слева),

Со«дшмнт

Наступление

события



Использование событий

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

Обработна событий

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

269

Практинум: обработка событий

1. Создайте новое консольное приложение с именем chi2Ex0i В директории C:\BegCSharp\Chapterl2\.

2. Л^одифицирунте код в ciassi.es следующим образом:

using System; using System.Timers;

namespace Chl2Ex01 (

class Claasl

static int counter * 0;

static string displayString -

'This string will appear one letter at a time.

static void Main [string[] arga)

(

Timer myTimer = new Timer (100);

myTimer.Elapsed +*= new ElapsedEventHandler (WriteChar) ; myTimer.Start() ;

Console.ReadLine()j

static void WriteChar(object source, ElapsedEventArge e)

(

Console.Write(displayString[counter** t displayString.Length]J;

) .

)

3. Запустите приложение (нажатие клавиши Enter в процессе работы прнложепия приведет к прекращению его выполнения):

- ¦¦ Cr'iScgCSbdrp' Ctisfjtt;rI3\Ch 12Ек01\biit\Dt±bufi\EIhp [ гЕнО I .кис

TSii.’.; u.111 --111ji¦ ¦.¦:¦ am: nl j t iru: - Thi- и ; L !. njlflt:.>l bnu

¦ \ r. .i time . Thli : ¦ ¦ i ¦ 111 ¦. : ill ¦ ^ i1;. i ? 11 i' и no 1 г ¦ t v и iL л г 11 ; ini:. !' 11; ¦ ¦: ¦" i i> 11 ¦. t i J I ¦ ¦ i..с
Предыдущая << 1 .. 120 121 122 123 124 125 < 126 > 127 128 129 130 131 132 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.