Опубликован: 19.08.2004 | Уровень: для всех | Доступ: платный | ВУЗ: Национальный исследовательский ядерный университет «МИФИ»
Самостоятельная работа 5:

Событийно-ориентированное программирование

< Лекция 12 || Самостоятельная работа 5: 12 || Лекция 13 >
Аннотация: Цель: ознакомление с особенностями реализации механизмов событийно-ориентированного программирования в языке C# (механизм обработки событий, исключительные ситуации).

Теоретические сведения

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

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

Описание события

Синтаксис:

event имя_делегата имя_обьекта;

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

Некоторые события могут активизировать несколько процедур обработки, в том числе определенных в других объектах. Такие события называются широковещательными. Реализация механизма широковещательных событий в языке программирования 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();
    }
}
< Лекция 12 || Самостоятельная работа 5: 12 || Лекция 13 >