08.04.2013, 19:24
Wie kann ich eine while-Schleife geschickt beenden?
Ich habe zwei while-Schleifen. Die äussere Schleife wird durch den Melder "Beenden" gesteuert. Innerhalb dieser Schleife befindet sich ein weiterer Prozess, der gestartet oder beendet werden kann ("Melder 1").
Melder 1 kann die innere Schleife beenden, wird aber auch verwendet, um die while-Schleife wieder zu starten (z. Könnten in diesem Prozess Daten abgespeichert werden). Um Pollen zu vermeiden, habe ich die Funktion "Auf Meldung warten..." genommen und "vorige ignorieren = true" gesetzt, damit die Schleife nicht pollt. Beim Beenden des Programms werden die Melder "Beenden = True" gesetzt, um die äussere Schleife zu beenden und der Melder1 = false, um Aufzeichnung zu beenden. Nun bleibt die Schleife aber hängen, da die Funktion "Auf Meldung warten..." noch aktiv ist.
Ich könnte jetzt in der Prozedur "Programm beenden" zweimal den Melder auf false setzen, einmal zum Beenden der inneren Schleife, falls die noch aktiv ist, und dann ein zweites Mal, dass die Funktion "auf Melder warten..." nochmal ausgelöst wird mit dem Wert false, damit beide Schleifen dann geschlossen werden. Der false-case zum Abfragen, ob Melder1=true/false ist leer.
Wäre meine Lösung mit doppeltem Setzen von Melder1=false eine brauchbare Lösung oder gibt es vielleicht bessere Möglichkeiten?
Ich habe zwei while-Schleifen. Die äussere Schleife wird durch den Melder "Beenden" gesteuert. Innerhalb dieser Schleife befindet sich ein weiterer Prozess, der gestartet oder beendet werden kann ("Melder 1").
Melder 1 kann die innere Schleife beenden, wird aber auch verwendet, um die while-Schleife wieder zu starten (z. Könnten in diesem Prozess Daten abgespeichert werden). Um Pollen zu vermeiden, habe ich die Funktion "Auf Meldung warten..." genommen und "vorige ignorieren = true" gesetzt, damit die Schleife nicht pollt. Beim Beenden des Programms werden die Melder "Beenden = True" gesetzt, um die äussere Schleife zu beenden und der Melder1 = false, um Aufzeichnung zu beenden. Nun bleibt die Schleife aber hängen, da die Funktion "Auf Meldung warten..." noch aktiv ist.
Ich könnte jetzt in der Prozedur "Programm beenden" zweimal den Melder auf false setzen, einmal zum Beenden der inneren Schleife, falls die noch aktiv ist, und dann ein zweites Mal, dass die Funktion "auf Melder warten..." nochmal ausgelöst wird mit dem Wert false, damit beide Schleifen dann geschlossen werden. Der false-case zum Abfragen, ob Melder1=true/false ist leer.
Wäre meine Lösung mit doppeltem Setzen von Melder1=false eine brauchbare Lösung oder gibt es vielleicht bessere Möglichkeiten?