Verwenden von Ereignisstrukturen in einer Schleife
- Aktualisiert2025-08-27
- 2 Minute(n) Lesezeit
Es wird empfohlen, nicht mehr als eine Ereignisstruktur in eine Schleife einzufügen. Wenn bei dieser Konfiguration ein Ereignis auftritt, verarbeitet die Ereignisstruktur das Ereignis, die Schleife wird ausgeführt und die Ereignisstruktur wartet auf das nächste Ereignis. Befinden sich zwei Ereignisstrukturen in einer Schleife, kann die Schleife so lange nicht ausgeführt werden, bis beide Ereignisstrukturen das Ereignis verarbeitet haben. Wenn Sie die Sperrung des Frontpanels für die Ereignisstruktur aktiviert ist, kann es vorkommen, dass die Benutzeroberfläche des VIs auf gewisse Eingaben nicht mehr anspricht.
Wenn Sie zum Beispiel zwei Ereignisstrukturen in einer While-Schleife platzieren und diese so konfigurieren, dass die erste Ereignisstruktur ein "Maustaste gedrückt-Ereignis" und die zweite Ereignisstruktur ein "Taste gedrückt-Ereignis" behandelt, wird die erste Ereignisstruktur ein "Maustaste gedrückt-Ereignis" empfangen, sobald der Anwender die Maustaste betätigt. Die erste Ereignisstruktur führt den entsprechenden Ereignis-Case aus und beendet die Ausführung. In der Zwischenzeit, wartet die Ereignisstruktur darauf, dass eine Taste betätigt wird. Sobald der Anwender eine Taste drückt, empfängt die zweite Ereignisstruktur ein "Taste gedrückt-Ereignis". Nachdem die zweite Ereignisstruktur das Ereignis verarbeitet hat, wird die While-Schleife ausgeführt. Wenn der Anwender diese Interaktionen weiter abwechselnd ausführt, wie beispielsweise die Erzeugung eines "Maustaste gedrückt-Ereignisses", eines "Taste gedrückt-Ereignisses", dann wieder ein "Maustaste gedrückt-Ereignis" gefolgt von einem "Taste gedrückt-Ereignis" usw., wird das VI störungsfrei ausgeführt, da die Ereignisstruktur die Ereignisse der Reihenfolge nach ausführt und sich die While-Schleife wiederholt.
Betätigt der Anwender die Maustaste jedoch zwei Mal nacheinander, und löst damit zwei "Maustaste gedrückt-Ereignisse" nacheinander aus, also ohne alternierendes "Taste gedrückt-Ereignis", wird das Frontpanel "eingefroren". Beim ersten Mausklick des Anwenders empfängt die erste Ereignisstruktur ein "Maustaste gedrückt-Ereignis", verarbeitet dieses und beendet die Ausführung. Die zweite Ereignisstruktur wartet jedoch weiterhin auf ein "Taste gedrückt-Ereignis" und hindert die While-Schleife am Fortsetzen ihrer Iteration. Sobald der Benutzer die Maustaste ein zweites Mal betätigt, wird ein zweites Ereignis des Typs "Maustaste gedrückt" erzeugt und das Frontpanel so lange gesperrt, bis die erste Ereignisstruktur das Ereignis verarbeitet hat. An diesem Punkt befindet sich das VI in einem Sperrstatus. Die erste Ereignisstruktur kann solange nicht ausgeführt werden, bis die While-Schleife einen weiteren Schleifendurchlauf macht; und die While-Schleife kann solange keinen weiteren Durchlauf starten, bis die zweite Ereignisstruktur ein "Taste gedrückt-Ereignis" empfängt und verarbeitet. Da das Frontpanel gesperrt ist, können keine "Taste gedrückt-Ereignisse" eintreten. Das Frontpanel bleibt solange gesperrt, bis der Anwender die Ausführung des VIs abbricht.
Um dies zu vermeiden, konfigurieren Sie alle Ereignisse, die von einem VI verarbeitet werden sollen, in einer einzelnen Ereignisstruktur oder stellen Sie sicher, dass sich nur je eine Ereignisstruktur in einer While-Schleife befindet. Stellen Sie außerdem sicher, dass immer eine Ereignisstruktur verfügbar ist, die Ereignisse bei deren Auftreten verarbeitet.