Partilhar via


Como implementar acessadores de eventos personalizados (Guia de Programação em C#)

Um evento é um tipo especial de delegado de multicast que só pode ser invocado de dentro da classe em que é declarado. O código do cliente assina o evento fornecendo uma referência a um método que deve ser invocado quando o evento é acionado. Esses métodos são adicionados à lista de invocação do delegado por meio de acessadores de eventos, que se assemelham a acessadores de propriedade, exceto que os acessadores de eventos são nomeados add e remove. Na maioria dos casos, não é necessário fornecer acessadores de eventos personalizados. Quando nenhum acessador de evento personalizado é fornecido em seu código, o compilador irá adicioná-los automaticamente. No entanto, em alguns casos, você pode ter que fornecer um comportamento personalizado. Um desses casos é mostrado no tópico Como implementar eventos de interface.

Exemplo

O exemplo a seguir mostra como implementar acessores de eventos personalizados para adicionar e remover. Embora você possa substituir qualquer código dentro dos acessadores, recomendamos que você bloqueie o evento antes de adicionar ou remover um novo método de manipulador de eventos.

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

Consulte também