(16.09.2020 07:10 )simcum schrieb: anscheinend gibt es keine vernünftige Alternative zum Ereignisevent.
Ein "Ereignis-Event"? Eigentlich ist ein Ereignis ein Event. Meinst du mit Ereignisevent "Reaktion auf ein Ereignis"?
Es gibt nur zwei Möglichkeiten auf ein Ereignis zu reagieren (programmiersprachenunabhängig): Ein Event-Case oder gepollt. Einmal schickt das Objekt, in dem das Ereignis auftritt, eine Message, die dann vom Eventhandler der übergeordneten SW abgearbeitet wird. Oder die übergeordnete SW muss beim Objekt ständig nachfragen, ob ein Ereignis eingetreten ist oder ob eine Änderung stattgefunden hat.
Der Eventcase ist da eindeutig die bessere Lösung.
Pollen ist immer die schlechtere Lösung. Pollen bedeutet immer einen Zeitverzug bzw. einen Zeitversatz. Ein Zeitverzug durch Polling kann aber zu unvorhergesehenen Bedingungen führen: Das reicht soweit, dass das Ereignis übersehen werden kann.
Zwar gibt es auch bei einem Eventcase den Effekt des Zeitverzuges, aber nur in ganz bestimmten Fällen. Dann aber ist dieser Zeitverzug leicht handlebar, da man um den Effekt ja weis.
Eine Statemachine ist für die Verarbeitung von Ereignissen unbrauchbar.
In deinem Falle, nämlich bei der Reaktion auf eine Benutzereingabe, gibt es nicht besseres als ein Eventcase. Viele Benutzereingabe finden nicht in einem Datenfluss-Kontext bzw. einem Ablauf-Kontext statt. Und ohne diesen Kontext, reicht ein Case vorkommen aus.