Ereignis (Computer) - Event (computing)

In Programmierung und Software - Design , ein Ereignis ist eine Aktion oder ein Ereignis von anerkannten Software , oft stammt asynchron von der äußeren Umgebung, die wird behandelt durch die Software. Computerereignisse können vom System, vom Benutzer oder auf andere Weise generiert oder ausgelöst werden. Normalerweise werden Ereignisse synchron mit dem Programmablauf behandelt ; das heißt, die Software kann einen oder mehrere dedizierte Orte haben, an denen Ereignisse behandelt werden, häufig eine Ereignisschleife . Eine Ereignisquelle umfasst den Benutzer, der über die Peripheriegeräte des Computers mit der Software interagieren kann – beispielsweise durch Tippen auf der Tastatur . Eine andere Quelle ist ein Hardwaregerät wie ein Timer . Software kann auch eigene Ereignisse in die Ereignisschleife auslösen, zB um den Abschluss einer Aufgabe zu kommunizieren. Software, die ihr Verhalten als Reaktion auf Ereignisse ändert, wird als ereignisgesteuert bezeichnet , oft mit dem Ziel, interaktiv zu sein .

Beschreibung

Ereignisgesteuerte Systeme werden normalerweise verwendet, wenn eine asynchrone externe Aktivität von einem Programm verarbeitet werden muss. zum Beispiel ein Benutzer, der eine Taste auf seiner Maus drückt. Ein ereignisgesteuertes System führt typischerweise eine Ereignisschleife aus , die auf solche Aktivitäten wartet, zB Eingaben von Geräten oder interne Alarme. Wenn einer dieser Fälle auftritt, sammelt es Daten über das Ereignis und sendet das Ereignis an die Ereignisbehandlungssoftware, die damit umgeht .

Ein Programm kann sich dafür entscheiden, Ereignisse zu ignorieren, und es kann Bibliotheken geben, um ein Ereignis an mehrere Handler zu senden, die so programmiert sein können, dass sie auf ein bestimmtes Ereignis warten. Die Daten im Zusammenhang mit einem Ereignis zu einem Minimum gibt an, welche Art von Veranstaltung es ist, aber auch andere Informationen enthalten , wie zum Beispiel , wenn es aufgetreten ist , wer oder was verursacht sie auftreten, und zusätzlich durch das Ereignis zur Verfügung gestellten Daten Quelle an den Handler darüber , wie die Ereignis verarbeitet werden soll.

Ereignisse werden typischerweise in Benutzerschnittstellen verwendet, wo Aktionen in der Außenwelt (Mausklicks, Fenstergrößenänderung, Tastaturdrücke, Nachrichten von anderen Programmen usw.) vom Programm als eine Reihe von Ereignissen behandelt werden. Programme, die für viele Windowing-Umgebungen geschrieben wurden, bestehen überwiegend aus Event-Handlern.

Ereignisse können auch auf Befehlssatzebene verwendet werden, wo sie Interrupts ergänzen . Im Gegensatz zu Interrupts werden Ereignisse normalerweise synchron behandelt: Das Programm wartet explizit darauf, dass ein Ereignis bearbeitet wird (typischerweise durch Aufruf einer Anweisung, die das nächste Ereignis absetzt), während ein Interrupt jederzeit eine Bearbeitung anfordern kann.

Veranstaltungsmodell delegieren

Veranstaltungsmodell delegieren. clickmeist die Ereignisquelle – in diesem Beispiel eine Schaltfläche – und enthält eine Liste von Listenern.

Eine gängige Variante in der objektorientierten Programmierung ist das Delegate-Ereignismodell , das von einigen grafischen Benutzeroberflächen bereitgestellt wird . Dieses Modell basiert auf drei Entitäten:

Darüber hinaus verlangt das Modell, dass:

  • Jeder Listener muss die Schnittstelle für das Ereignis implementieren, auf das er hören möchte
  • Jeder Hörer muss sich bei der Quelle registrieren, um seinen Wunsch zu erklären, das Ereignis zu hören
  • Jedes Mal, wenn die Quelle das Ereignis generiert, übermittelt sie es gemäß dem Protokoll der Schnittstelle an die registrierten Listener.

C# verwendet Ereignisse als spezielle Delegaten, die nur von der Klasse ausgelöst werden können, die sie deklariert. Dies ermöglicht eine bessere Abstraktion , zum Beispiel:

delegate void Notifier (string sender);

class Model {
    public event Notifier notifyViews;
    public void Change() { ... notifyViews("Model"); }
}

class View1 {
    public View1(Model m) {
        m.notifyViews += new Notifier(this.Update1);
    }

    void Update1(string sender) {
        Console.WriteLine(sender + " was changed during update"); 
    }
}

class View2 {
    public View2(Model m) {
        m.notifyViews += new Notifier(this.Update2); 
    }

    void Update2(string sender) {
        Console.WriteLine(sender + " was changed"); 
    }
}

class Test {
    static void Main() {
        Model model = new Model();

        new View1(model);
        new View2(model);
        model.Change();
    }
}

Ereignishandler

In der Computerprogrammierung ist ein Ereignishandler eine Callback- Subroutine , die Eingaben verarbeitet, die in einem Programm empfangen werden ( in Java und JavaScript als Listener bezeichnet ). Jedes Ereignis ist ein Teil von Informationen auf Anwendungsebene aus dem zugrunde liegenden Framework , normalerweise dem GUI-Toolkit . GUI-Ereignisse umfassen Tastendrücke , Mausbewegungen , Aktionsauswahlen und ablaufende Timer . Auf einer niedrigeren Ebene können Ereignisse die Verfügbarkeit neuer Daten zum Lesen einer Datei oder eines Netzwerkstreams darstellen. Eventhandler sind ein zentrales Konzept in der ereignisgesteuerten Programmierung .

Die Ereignisse werden durch das Framework basierend auf der Interpretation von Eingaben auf niedrigerer Ebene erzeugt, die selbst Ereignisse auf niedrigerer Ebene sein können. Beispielsweise werden Mausbewegungen und Klicks als Menüauswahl interpretiert. Die Ereignisse stammen zunächst von Aktionen auf Betriebssystemebene, wie z. B. von Hardwaregeräten erzeugte Interrupts , Software-Interrupt-Anweisungen oder Zustandsänderungen beim Polling . Auf dieser Ebene entsprechen Interrupt-Handler und Signal-Handler Event-Handlern.

Angelegte Events werden zunächst von einem Event Dispatcher innerhalb des Frameworks verarbeitet. Es verwaltet normalerweise die Zuordnungen zwischen Ereignissen und Ereignishandlern und kann Ereignishandler oder Ereignisse zur späteren Verarbeitung in eine Warteschlange stellen. Event-Dispatcher können Event-Handler direkt aufrufen oder darauf warten, dass Ereignisse mit Informationen über den auszuführenden Handler aus der Warteschlange genommen werden.

Ereignisbenachrichtigung

Ereignisbenachrichtigung ist ein Begriff, der in Verbindung mit Kommunikationssoftware verwendet wird, um Anwendungen, die kleine Nachrichten generieren (die "Ereignisse") mit Anwendungen zu verknüpfen, die die zugehörigen Bedingungen überwachen und durch Ereignisse ausgelöste Aktionen ausführen können.

Die Ereignisbenachrichtigung ist eine wichtige Funktion in modernen Datenbanksystemen (wird verwendet, um Anwendungen zu informieren, wenn Bedingungen eingetreten sind, auf die sie achten), modernen Betriebssystemen (verwendet, um Anwendungen zu informieren, wenn sie etwas unternehmen sollten, z. B. ein Fenster aktualisieren) und modernen verteilten Systeme, bei denen sich der Produzent eines Ereignisses möglicherweise auf einem anderen Computer befindet als der Verbraucher oder die Verbraucher. Ereignisbenachrichtigungsplattformen sind normalerweise so konzipiert, dass die Anwendungen, die Ereignisse erzeugen, nicht wissen müssen, welche Anwendungen sie verwenden oder wie viele Anwendungen den Ereignisstrom überwachen.

Es wird manchmal als Synonym für Publish-Subscribe verwendet , ein Begriff, der sich auf eine Produktklasse bezieht, die Ereignisbenachrichtigungen in vernetzten Umgebungen unterstützt. Das virtuelle Synchronitätsmodell wird manchmal verwendet, um Ereignisbenachrichtigungssysteme und Veröffentlichungs-/Abonniersysteme mit stärkeren Fehlertoleranz- und Konsistenzgarantien auszustatten.

Benutzergenerierte Ereignisse

Es gibt eine große Anzahl von Situationen oder Ereignissen, die ein Programm oder System erzeugen oder auf die reagieren kann. Einige gängige benutzergenerierte Ereignisse sind:

Maus-Ereignisse

Ein Zeigegerät kann eine Anzahl von durch Software erkennbaren Zeigegerätgesten erzeugen . Eine Maus kann eine Reihe von Mausereignissen erzeugen, wie z. B. Mausbewegungen (einschließlich Bewegungsrichtung und Entfernung), linke/rechte Maustaste nach oben/unten und Mausradbewegung oder eine Kombination dieser Gesten.

Tastaturereignisse

Das Drücken einer Taste auf einer Tastatur oder einer Tastenkombination erzeugt ein Tastaturereignis, das es dem aktuell laufenden Programm ermöglicht, auf die eingegebenen Daten zu reagieren, beispielsweise welche Taste/n der Benutzer gedrückt hat.

Joystick-Ereignisse

Das Bewegen eines Joysticks erzeugt ein XY-Analogsignal. Sie haben oft mehrere Schaltflächen, um Ereignisse auszulösen. Einige Gamepads für beliebte Spielboxen verwenden Joysticks.

Touchscreen-Ereignisse

Die mit einem Touchscreen erzeugten Ereignisse werden allgemein als Berührungsereignisse oder Gesten bezeichnet .

Geräteereignisse

Geräteereignisse umfassen Aktionen durch oder an einem Gerät, wie z. B. Schütteln, Neigen, Drehen, Bewegen usw.

Siehe auch

Verweise

Externe Links