Gewusst wie: Implementieren benutzerdefinierter Ereigniszugriffsmethoden (C#-Programmierhandbuch)How to: Implement Custom Event Accessors (C# Programming Guide)

Ein Ereignis ist eine besondere Art eines Multitaskdelegaten, der nur aus der Klasse , in der er deklariert ist, aufgerufen werden kann.An event is a special kind of multicast delegate that can only be invoked from within the class that it is declared in. Der Client abonniert das Ereignis durch Bereitstellen eines Verweises auf eine Methode, die aufgerufen werden soll, wenn das Ereignis ausgelöst wird.Client code subscribes to the event by providing a reference to a method that should be invoked when the event is fired. Diese Methoden werden der Aufrufliste des Delegaten über Ereignisaccessoren hinzugefügt, die Eigenschaftenaccessoren ähneln, mit der Ausnahme, dass Ereignisaccessoren mit add und remove bezeichnet werden.These methods are added to the delegate's invocation list through event accessors, which resemble property accessors, except that event accessors are named add and remove. In den meisten Fällen müssen Sie keine benutzerdefinierten Ereignisaccessoren angeben.In most cases, you do not have to supply custom event accessors. Wenn keine benutzerdefinierten Ereignisaccessoren im Code angegeben werden, werden sie durch den Compiler automatisch hinzugefügt.When no custom event accessors are supplied in your code, the compiler will add them automatically. In einigen Fällen müssen Sie möglicherweise jedoch benutzerdefiniertes Verhalten bereitstellen.However, in some cases you may have to provide custom behavior. Einen solchen Fall enthält das Thema Vorgehensweise: Implementieren von Schnittstellenereignissen.One such case is shown in the topic How to: Implement Interface Events.

BeispielExample

Das folgende Beispiel veranschaulicht das Implementieren von Ereignisaccessoren zum Hinzufügen und Entfernen.The following example shows how to implement custom add and remove event accessors. Obwohl Sie Code innerhalb der Accessoren ersetzen können, wird empfohlen, dass Sie das Ereignis sperren, bevor Sie eine neue Ereignishandlermethode hinzufügen oder entfernen.Although you can substitute any code inside the accessors, we recommend that you lock the event before you add or remove a new event handler method.

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

Siehe auchSee Also

EreignisseEvents
eventevent