🏠 » Lexikon » E » Ereigniskette

Ereigniskette

Eine Ereigniskette ist eine Kette von Ereignissen, die per Programmcode ausgelöst werden. Zum Beispiel tritt beim Ändern der Text-Eigenschaft eines Textfelds das zugehörige Change-Ereignis ein.

Wenn diese Eigenschaftsänderung nun in der Change-Ereignisprozedur selbst vorgenommen wird, hat man es mit dem klassischen Exempel einer Ereigniskette zu tun: Eine Prozedur ruft sich selbst direkt oder (wie im Beispielfall) indirekt wieder auf.

Probleme von Ereignisketten

Ein nach diesem Prinzip arbeitendes, unter dem Namen rekursive Methode oder Rekursion programmtechnisch bewusst eingesetztes Lösungsverfahren enthält stets eine Abbruchbedingung, durch die verhindert wird, dass sich das Programm in einer Endlosschleife „aufhängt“.

Eine unbeabsichtigte Rekursion kann nämlich zum Überlaufen des Stapelspeichers (engl. Stack) führen, eines Bereichs des Hauptspeichers, in dem unter anderem alle Prozeduraufrufe abgelegt werden. Moderne Programmiersprachen melden dann den Fehler: Nicht genügend Stapelspeicher.

Ereignisketten vermeiden

Um Ereignisketten aus dem Wege zu gehen, sollte in der Change-Ereignisprozedur eines Steuerelements dessen Inhalt möglichst nicht verändert werden.

Wenn dies doch einmal erforderlich ist, muss durch entsprechende Anweisungen zumindest dafür gesorgt werden, dass während der aktuellen Ausführung des Codes in der Change-Prozedur weitere Aufrufe unterbunden werden.

Auch mehrere Steuerelemente, die sich in ihren Ereignisprozeduren wechselseitig aktualisieren, können zu einer Ereigniskette führen.

Ereigniskette - Definition & Erklärung - Zusammenfassung

Im Zusammenhang mit dem Lexikoneintrag Ereigniskette sollte man sich folgende Punkte merken:

  • Eine Ereigniskette ist eine Kette von Ereignissen, die per Programmcode ausgelöst werden.
  • Eine Ereigniskette kann eine Rekursion auslösen, die zum Überlaufen des Stapelspeichers führen kann.
  • Eine Ereigniskette mit einer guten Programmlogik prüft und verhindert rekursive Aufrufe.

Bitte bewerten (1 - 5):