Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Прием поступающих событий
Прием поступающих событий
Использование событий в C# позволяет также упростить регистрацию обработчиков событий вызывающей стороны. Вместо необходимости указывать пользовательские вспомогательные методы, вызывающая сторона просто использует операции += и -= (которые в фоновом режиме "подключают" add_XXX() или remove_XXX()). Если вы хотите регистрировать событие, то следуйте показанному ниже шаблону.
// ОбъектнаяПеременная.ИмяСобытия +=
// new СоответствующийДелегат(вызываемаяФункция);
Car.EngineHandler d = new Car.EngineHandler(CarExplodedEventHandler) myCar.Exploded += d;
Чтобы отменить привязку к источнику событий, используйте операцию -=.
// ОбъектнаяПеременная.ИмяСобытия -= объектДелегата;
myCar.Exploded -= d;
С учетом этих соответствующих ожиданиям шаблонов, вот как должен выглядеть модифицированный метод Main(), в котором используется синтаксис регистрации событий C#.
class Program {
statiс vоid Main(string[] args) {
Console.WriteLine("***** События *****");
Car c1 = new Car("SlugBug", 100, 10);
// Регистрация обработчиков событий.
сl.AboutToBlow += new Car.CarEventHandler(CarIsAlmostDoomed);
cl.AboutToBlow += new Car.CarEventHandler(CarAbautToBlow);
Car.CarEventHandler d = new Car.CarEventHandler(CarExploded);
cl.Exploded += d;
Console.WriteLine("n***** Ускорение *****);
for(int i = 0; i ‹ 6; i++) cl.Accelerate(20);
// Удаление метода CarExploded из списка вызовов.
cl.Exploded -= d;
Console.WriteLine("n***** Ускорение *****");
for(int i = 0; i ‹ 6; i++) cl.Accelerate(20);
Console.ReadLine();
}
public static void CarAboutToBlow(string msg) { Console.WriteLine(msg); }
public static void CarIsAlmostDoomed(string msg) { Console.WriteLine("Critical Message from Car: {0}", msg); }
public static void CarExploded(string msg) { Console.WriteLine(msg); }
}
Исходный код. Проект CarEvents размещен в подкаталоге, соответствующем главе 8.
- Глубинный механизм событий
- 17.2. Регистрация обработчиков событий
- 17.3. Вызов обработчиков событий
- Восстановление из резервной копии на системе-приемнике
- Раздел VII Левиафан в Сети: защита права на тайну частной жизни после событий 2013 г.
- Прием «кулисы»
- Расширение механизма событий
- Прием 45. «Простые слова. Четкие идеи. Сильные эмоции»
- Прием 49. «Сопереживание и искренность»
- 5.2. Основные приемы работы, элементы текстового редактора
- 6.2. ПРИЕМЫ СОЗДАНИЯ ПРОДАЮЩИХ ТЕКСТОВ
- 8.6.1. Блокировка приема спама