Практическое руководство. Реализация пользовательских методов доступа к событиям (Руководство по программированию в C#)

Обновлен: Ноябрь 2007

Событие представляет собой особый вид многоадресного делегата, который может быть вызван только в классе, в котором он объявлен. Клиентский код подписывается на событие за счет предоставления ссылки на метод, вызываемый при возникновении события. Эти методы добавляются в список вызова методов делегата с помощью методов доступа к событиям, которые сходны с методами доступа к свойствам, за исключением методов доступа к событиям с именами add и remove. В большинстве случаев нет необходимости предоставлять пользовательские методы доступа к событиям. Если в коде отсутствуют пользовательские методы доступа к событиям, компилятор добавит их автоматически. Однако в некоторых случаях может потребоваться обеспечить пользовательское поведение. Подобная ситуация показана в разделе Практическое руководство. Реализация событий интерфейса (Руководство по программированию в C#).

Пример

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

event EventHandler IDrawingObject.OnDraw
        {
            add
            {
                lock (PreDrawEvent)
                {
                    PreDrawEvent += value;
                }
            }
            remove
            {
                lock (PreDrawEvent)
                {
                    PreDrawEvent -= value;
                }
            }
        }

См. также

Ссылки

События (Руководство по программированию в C#)

event (Справочник по C#)