Введение в теорию программирования. Объектно-ориентированный подход

         

Широковещательные события


Некоторые события могут активизировать несколько процедур обработки, в том числе определенных в других объектах. Такие события называются широковещательными. Реализация механизма широковещательных событий в языке программирования C# основана на использовании многоадресных делегатов.

Пример управления событиями посредством делегата:

// Объявление делегата, на основе которого // будет определено событие. delegate void MyEventHandler () ;

// Объявление класса, в котором // инициируется событие. class MyEvent { public event MyEventHandler activate; // В этом методе инициируется событие.

public void fire() { if (activate != null) activate(); } }

class X { public void Xhandler() { Console.WriteLine("Событие получено объектом класса X."); } }

class Y { public void Yhandler() { Console.WriteLine("Событие получено объектом класса Y."); } }

class EventDemo { static void handler() { Console.WriteLine("Событие получено объектом класса EventDemo.") }

public static void Main() { MyEvent evt = new MyEvent(); X xOb = new X(); Y yOb = new Y();

// Добавление методов handler (), XhandlerО // и YhandlerO в цепочку обработчиков события. evt.activate += new MyEventHandler(handler); evt.activate += new MyEventHandler(xOb.Xhandler); evt.activate += new MyEventHandler(yOb.Yhandler); evt.fire(); Console.WriteLine(); evt.activate -= new MyEventHandler(xOb.Xhandler); evt.fire(); } }



Содержание раздела