Практическое руководство. Реализация пользовательских методов доступа к событиям (Руководство по программированию в C#)
Событие представляет собой многоадресный делегат особого типа, который можно вызвать только из класса, в котором он объявлен.Клиентский код подписывается на события, предоставляя ссылку на метод, который нужно вызвать в случае возникновения события.Эти методы добавляются в список вызова методов делегата с помощью методов доступа к событиям, которые сходны с методами доступа к свойствам, за исключением методов доступа к событиям с именами add и remove.В большинстве случаев нет необходимости предоставлять пользовательские методы доступа к событиям.Если в коде отсутствуют пользовательские методы доступа к событиям, компилятор добавит их автоматически.Однако в некоторых случаях может потребоваться обеспечить пользовательское поведение.Подобная ситуация показана в разделе Практическое руководство. Реализация событий интерфейса (Руководство по программированию в C#).
Пример
В следующем примере демонстрируется реализация пользовательских методов доступа add и remove для события.Несмотря на то, что в этих методах доступа можно заменить любой код, перед добавлением или удалением нового метода обработчика событий рекомендуется заблокировать событие.
event EventHandler IDrawingObject.OnDraw
{
add
{
lock (PreDrawEvent)
{
PreDrawEvent += value;
}
}
remove
{
lock (PreDrawEvent)
{
PreDrawEvent -= value;
}
}
}