Zwei While Schleifen Parallel eine Bedingung zur Beendung
Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Zwei While SchleifenParallel eine Bedingung zur Beendung
Hallo,
ich hätte gern folgendes realisiert, ich habe zwei While Schleifen, die Parallel abgearbeitet werden, diese beiden Schleifen hätte ich gern über eine Bedingung beendet, hat jemand einen Lösungsansatz für mich?
Beste Grüße
Zwei While SchleifenParallel eine Bedingung zur Beendung
Moin!
Beenden kannst du die auf jeden Fall über eine globale Variable, auch wenn das mit Sicherheit nicht die beste Lösung ist.
Für eine bessere Lösung müsstes du genauere Informationen liefern.
Zwei While SchleifenParallel eine Bedingung zur Beendung
Ich nutze ebenfalls Melder, außer der Stopp-Button soll die Schleifen beenden. Dann verwende ich lokale Variablen. Und hier darf man diese meiner Meinung nach auch getrost verwenden.
Bei den Meldern hat man nämlich ein weiteres Problem:
Angenommen der Melder wird vor Schleife 1 erstellt und nach Verlassen von Schleife 1 beendet. Er meldet Schleife 2, dass diese beendet werden soll. Nun kann es sein, dass Schleife 1 vor Schleife 2 endet und der Melder freigegeben wird. In Schleife 2 erhältst du dann einen Fehler aufgrund der ungültigen Melder-Referenz beim Versuch den Melder auszulesen.
Diese Fehler müsstest du dann noch abfangen/ignorieren oder einen 2. Melder verwenden, der an Schleife 1 meldet, dass Schleife 2 beendet wurde und dann erst Schleife 1 verlassen wird (und anschließend beide Melder freigibt).
Du siehst, das kann recht kompliziert werden.
Natürlich kann man auch hergehen und die Schleife 2 beenden, wenn am VI-Ausgang des Melden-Lesen-VIs ein Fehler auftritt. Nur ganz ordentlich ist dieses Vorgehen nicht.
Zwei While SchleifenParallel eine Bedingung zur Beendung
' schrieb:Bei den Meldern hat man nämlich ein weiteres Problem:
Angenommen der Melder wird vor Schleife 1 erstellt und nach Verlassen von Schleife 1 beendet. Er meldet Schleife 2, dass diese beendet werden soll. Nun kann es sein, dass Schleife 1 vor Schleife 2 endet und der Melder freigegeben wird. In Schleife 2 erhältst du dann einen Fehler aufgrund der ungültigen Melder-Referenz beim Versuch den Melder auszulesen.
Ich habe üblicherweise eine Schleife die alle Events über Melder an alle parallelen Schleifen weiter verteilt. Auch das Event "StoppButton-Wertänderung". Um das zitierte Problem zu beheben verwende ich Rendevouz. Erst wenn alle Schleifen beendet wurden, wir der Melder geschlossen.
Grüße,
Totti
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)
Zwei While SchleifenParallel eine Bedingung zur Beendung
Wenn man eine Ereignisstruktur nutzt, dann ist das ok. Da muss man jedoch nicht über Melder gehen, sondern könnte auch benutzerdefinierte Ereignisse auslösen.
Nur ohne Ereignisstruktur entsteht das von mir angesprochene Problem.
Zwei While SchleifenParallel eine Bedingung zur Beendung
Die bisher gegebenden Antworten passen mehr auf die Frage, wie man parallel laufende VIs beendet. Dazu kann man Melder oder globae Variablen verwenden. In Bezug aus Deine Frage aber - man ein VI mit parallel laufenden Schleifen beendet - hieße beides mit Kanonen auf Spatzen schießen.
Die Frage kommt periodisch jeden Monat, und immer wieder ist die einfache Antwort diese
17.11.2010, 11:48 (Dieser Beitrag wurde zuletzt bearbeitet: 17.11.2010 11:49 von Matze.)