LabVIEWForum.de
SubVI aus MainVI heraus abbrechen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: SubVI aus MainVI heraus abbrechen (/Thread-SubVI-aus-MainVI-heraus-abbrechen)



SubVI aus MainVI heraus abbrechen - vogster - 05.04.2010 15:08

Hallo Forum,

kann ich aus einem Main-VI heraus ein SUB VI abbrechen, und zwar so, dass das MainVI weiterläuft?
Die Methode ist wahrscheinlich sehr unsauber, ich habe aber im SUB VI viele Melder, Queues und Schleifen,
die müsste ich ansonsten alle mit Timeouts etc. versehen.

Zumal das Programm auch sehr selten abgebrochen werden müsste.
Beim Ausführen von "Stopp" aus der Applikationssteuerung wird auch das MainVI beendet,
bei der Verwendung eines Mathodenkonten bekomme ich den Fehler 1000, "Das VI befindet sich in einem für diese Operation unzulässigem Zustand"

Hat noch jemand einen Tipp für mich?

Danke für die Mühe
Vogster


SubVI aus MainVI heraus abbrechen - jg - 05.04.2010 17:01

Also, empfehlen will ich das Vorgehen nicht, und ich weiß auch nicht, wie hierauf eine Exe reagiert, aber diese InvokeNode hört sich doch nicht schlecht an:
[attachment=25568]
Gruß, Jens


SubVI aus MainVI heraus abbrechen - IchSelbst - 05.04.2010 18:10

' schrieb:Die Methode ist wahrscheinlich sehr unsauber, ich habe aber im SUB VI viele Melder, Queues und Schleifen,
die müsste ich ansonsten alle mit Timeouts etc. versehen.
Die Methode ist definitiv unsauber. Ich rate von dieser Methode dringend ab. Wenn das SubVI abgebrochen wird, heißt das noch lange nicht, dass Queues und Melder geschlossen werden. Was ich auch sehr bezweifle ist, dass eine Queue/Melder-Operation, die gerade auf einem Endlos-Timeout hängt, abgebrochen wird.

Zitat:Zumal das Programm auch sehr selten abgebrochen werden müsste.
Sowas rechtfertigt selbst die unsaubersten Mittel nicht.

Zitat:bei der Verwendung eines Mathodenkonten bekomme ich den Fehler 1000, "Das VI befindet sich in einem für diese Operation unzulässigem Zustand"
Ein SubVI kann nur entweder per Datenfluß oder per VI-Server gestartet werden (von reentrant abgesehen). Ein per Datenfluß gestartet VI kann nicht per VI-Server (siehe "Abort VI") gestoppt werden.

Zitat:Hat noch jemand einen Tipp für mich?
Entweder einen sauberen Abbruch hineinprogrammieren (geht mit Referenzen, Userevents etc). Oder das SubVI per VI-Server starten. Dann sollte es auch mit Abort abbrechbar sein.


SubVI aus MainVI heraus abbrechen - vogster - 05.04.2010 19:13

Hallo

und Danke für die Antworten.

Ich habe das SubVI aus dem Datenfluss heraus gestartet, daher hat wohl die AbortVI - Methode nicht
funktioniert. Ich habe ein VI noch nie über einen VI-Server gestartet, werde ich mir mal ansehen.

Wenn ich das richtig verstanden habe, dann ist die Abort - Methode generell unsauber.
Auch wenn ich das VI über einen VI - Server starte?

Ansonsten sieht das nach viel Arbeit aus!

Danke und Grüße.
Vogster


SubVI aus MainVI heraus abbrechen - IchSelbst - 05.04.2010 22:14

' schrieb:Wenn ich das richtig verstanden habe, dann ist die Abort - Methode generell unsauber.
Ich bin der Meinung, ein VI gehört "normal" beendet. Ein Abbrechen als solches gehört nicht zum normalen Beenden.

Zitat:Auch wenn ich das VI über einen VI - Server starte?
Auch wenn ein VI über den VI-Server gestartet wurde, ist ein Beenden, eigenlich Abbrechen, per se unsauber - auch wenn es funktioniert.


SubVI aus MainVI heraus abbrechen - labiNNaH - 06.04.2010 11:40

Hallo Vogster,

hier findest Du (Beitrag 6) ein ähnliches Beispiel.