Ein eigenes Event definieren und nutzen

Oft kommt es vor, dass nach dem Ausführen einer Aktion in einer Klasse andere Klassen darüber benachrichtigt werden müssen oder sollen. Hierfür gibt es in .NET Events, die bei einer bestimmten Aktion ausgelöst werden (z.B. wenn eine asynchrone Aktion durchlaufen wurde und die Daten da sind). Natürlich kann es sein, dass hier die vom .NET vorgegebenen Standardevents ausreichen, aber natürlich ist es auch möglich eigene zu definieren, denn nicht oft passen in ein fertiges .NET-Event unsere Parameter hinein. Das Ganze ist auch gar nicht mal aufwändig, denn wir müssen lediglich unseren Eventhandler definieren und das Event in unserer Klasse einbinden und natürlich irgendwo auslösen.

public delegate void CustomEventDefinitionForACustomAction(object sender, object data);

public class ExampleClass
{
    public event CustomEventDefinitionForACustomAction CustomEvent;

    public void CustomAction()
    {
        if (CustomEvent != null)
            CustomEvent.Invoke(this, new object());
    }
}

Das ist auch schon alles an Quellcode was hierfür nötig ist. Das „delegate“ definiert hierbei unseren Handler mit den Parametern. Eine Klasse, die sich anschließend auf dieses Event hängt muss eine Methode mit den gleichen Parametern bereitstellen. Das „object data“ kann natürlich hier frei definiert werden. In der Regel verwendet man hier eine spezielle „Event-Args“-Klasse. Ausgelöst wird im Beispiel das Event beim Aufrufen der „CustomAction“-Methode, nachdem es zuvor als „CustomEvent“ in der Klasse verfügbar gemacht wurde.