Anfang des Inhaltsbereichs

Übersichtsgrafik zu Ereignissen Dokument im Navigationsbaum lokalisieren

Betrachten wir zwei Klassen C1 und C2:

Diese Grafik wird im zugehörigen Text erklärt

Die Klasse C1 enthält ein Ereignis E1, welches von der Methode M1 ausgelöst wird. Die Klasse C2 enthält eine Methode M2, die das Ereignis E1 der Klasse C1 behandeln kann.

Das folgende Bild verdeutlicht die-Registrierung von Behandlern:

Diese Grafik wird im zugehörigen Text erklärt

Das Programm erzeugt eine Instanz der Klasse C1 und zwei Instanzen der Klasse C2. Die Werte der Referenzvariablen R1, H1 und H2 zeigen auf diese Instanzen.

Mit der Anweisung SET HANDLER wird zu jeder auslösenden Instanz für jedes Ereignis, für das eine Behandlermethode registriert wird, eine für den Verwender unsichtbare Behandlertabelle angelegt.

Die Behandlertabelle enthält die Namen der Behandlermethoden und Referenzen auf die registrierten Instanzen. Die Einträge der Tabelle werden einzig und allein durch die Anweisung SET HANDLER dynamisch verwaltet. Eine Referenz auf eine Instanz in einer Behandlertabelle zählt wie eine Referenz in einer Refernzvariablen als Verwendung der Instanz und hat somit direkten Einfluß auf deren Lebensdauer. Im obigen Bild bedeuted das, daß auch nach einer eventuellen Initialisierung der Referenzvariablen H1 und H2 die Instanzen C2<1> und C2<2> nicht von der Garbage Collection erfaßt werden, solange nicht ihre Registrierung in der Behandlertabelle zurückgesetzt wird.

Für statische Ereignisse wird eine instanzunabhängige Behandlertabelle für die entsprechende Klasse angelegt.

Wenn ein Ereignis ausgelöst wird, durchläuft das System die zugehörige Ereignistabelle und führt die dort aufgeführten Methoden in ihren Instanzen (bzw. bei statischen Behandlermethoden in ihren Klassen) aus.

Ende des Inhaltsbereichs