(02.07.2013 19:00 )Lucki schrieb: (02.07.2013 18:21 )Holy schrieb: Das ist nicht korrekt. Jede Registrierung stellt eine eigene Queue dar und erhält jeden gefeuerten Event für sich. Somit kannst du einen Event feuern und alle Stellen die diesen Event separat registriert haben erhalten diesen auch. Problem an Hassenfuss seinem Beispiel war die Wiederverwendung einer Registrierung und somit war das Element in der Eventqueue jeweils schon verarbeitet.
Tatsache ist zunächst, dass das VI funktioniert, und zwar zuverlässig. Es ist alles richtig was Du sagts, aber wo soll genau die Stelle in meinem VI sein, in der etwas "nicht korrekt" ist?
Das ganze erneute Event auslösen ist nicht notwendig. Ich hab das mal entsprechend angepasst. Jetzt erzeugt ein drücken des jeweiligen STOP-Buttons den EXIT Event für alle laufenden VIs. Dieser Event beendet dann ALLE Schleifen. Weiterhin habe ich das erneute senden von Events rausgelöscht weil nicht notwendig.
Warum ist das so:
"Create User Event" erzeugt einen Event und gibt die Referenz darauf zurück. Mittels dieser Referenz kann man von überall Events auslösen. Um Events abfangen zu können muss man eine Eventreferenz mittels "Register for Events" registrieren. Dies erzeugt letztendlich eine Eventqueue in der jeder mittels der Eventreferenz gefeuerten Events einläuft. Eine Eventstruktur mit dynamischen Event Terminal kann diese abarbeiten.
Jetzt ist es möglich die Eventreferenz an mehreren "Register for Events" zu registrieren. Jedes ist eine eigene Eventqueue die jeweils jeden der gefeuerten Events bekommt. D.h. im speziellen Fall jede der Registrierungen bekommt den einen gefeuerten EXIT Event und kann diesen abarbeiten.
User Events sind letztendlich ein MIMO-System da man an mehreren Stellen Events erzeugen kann und diese an mehreren Stellen wieder abfangen kann.
Du kannst das mal mit meinem Code probieren. Zieh das SubVI noch 5mal rein und es wird trotzdem funktionieren. Das ganze erneute senden ist einfach nicht notwendig.