' schrieb:Ich hab das jetzt mal ausprobiert mit der Methode FP.Close und der Eigenschaft FP.Open=false. Ich muss schon sagen - lange nicht mehr so viel Mist gesehen.
Was mach ich denn, wenn das VI in der IDE läuft? Nicht nur, dass auch das BD geschlossen wird - schließlich heißt es FP, und nicht FP+BD oder auch VI -, nein, es werden auch alle Änderungen im BD ignoriert, also verworfen - und das ohne nachzufragen. Wenn ich in der IDE bin, also keine EXE, möchte ich gerne haben, dass das BD offen bleibt, wenn ich es auf gemacht habe.
Du regst Dich hier ganz unnötig auf! Wer hindert Dich denn daran da FP.Close nur auszuführen wenn Du in einem Exe bist??
Und dass da FP.Close steht aber das Diagramm auch dicht geht hat einen ganz einfachen Grund der aus den Urzeiten von LabVIEW stammt. Das VI und alle darunterliegenden Dinge hingen damals ganz einfach am Frontpanel. Heute ist das wohl grundsätzlich etwas anders da FP != VI ist aber damals war es grundsätzlich unmöglich um ein BD offen zu haben ohne dass das FP auch offen ist. Und dieses Verhalten wurde bis heute ganz einfach beibehalten und das finde ich auch ganz logisch, aber vielleicht ist das ja nach >16 Jahren LabVIEW ganz einfach "deformation professional".
' schrieb:Da bei Exe nur diejenige beendet wird, für die das "Quit LV" ausgeführt wird, wird wohl Punkt 2 zutreffen. Mglw. habe ich mich auch etwas ungeglücklich ausgedrückt.
Zu diesem Punkt ist ganz einfach zu sagen dass die LabVIEW Runtime eigentlich nichts anders als eine Library an Funktionen ist. Das LabVIEW Exe selber ist der eigentliche Prozess der in den Speicher geladen wird und dort instantiert wird. Nachdem der sich im Speicher initialisiert hat lädt er die lvrt.dll und übergibt ihm die weitere Kontrolle. Aber diese lvrt.dll läuft immer im Kontext des ursprünglichen Przesses der durch die Exe instantiert wurde. Ein anderes LabVIEW Exe lädt die lvrt.dll ganz einfach auch und dann läuft diese halt ein weiteres mal innerhalb dieses zweiten Prozesskontextes. Soweit es die lvrt.dll betrifft hat die im Prinzip keinerlei Kenntnis davon dass sie innerhalb eines anderen Prozesses auch schon geladen wurde. Im Prinzip deshalb da ein Exe normalerweise beim Starten testet ob es schon läuft (derselbe exe Name schon im Speicher) und in dem Falle das Laden der Applikation abbricht. Dieser Check kann aber durch ein INI Token innerhalb des INI Files der Applikation ausgeschaltet werden, was aber meist nicht sinnvoll ist.
Rolf Kalbermatter