Schließen von Referenzen auf VIs und VI-Objekte mit Hilfe von VI-Skripten
- Aktualisiert2025-08-27
- 3 Minute(n) Lesezeit
Erfordert: VI-Skripte
Bei der Arbeit mit VI-Skripten benötigen Sie immer Referenzen auf die VIs und Objekte, die Sie erstellen, bearbeiten oder untersuchen möchten. Eine Referenz wird erstellt, wenn Sie VIs, Funktionen, Eigenschaften und Methoden verwenden, die eine Referenz ausgeben. Solange eine VI Referenz geöffnet ist, kann LabVIEW das entsprechende VI nicht aus dem Arbeitsspeicher löschen. Bei zahlreichen geöffneten Referenzen befinden sich daher viele VIs und Objekte im Arbeitsspeicher und die Ausführungsgeschwindigkeit von LabVIEW wird herabgesetzt. Im Extremfall kann LabVIEW keine neuen VIs oder Objekte mehr erzeugen, weil kein Arbeitsspeicher mehr frei ist. Zum Vermeiden solcher Ausführungsprobleme sollten Sie alle Referenzen auf VIs oder Objekte schließen, die in einem Skript-VI geöffnet sind.
Folgende Referenztypen müssen nicht geschlossen werden, da das Offenlassen keine Auswirkungen auf die Ausführungsgeschwindigkeit hat:
- Referenzen, die von GObject abgeleitet sind
- Die statischen Referenzen "Dieses VI" oder "Diese Anwendung"
Mit der Funktion Referenz schließen werden erstellte oder geöffnete Referenzen entfernt. Beachten Sie, dass die folgenden Aktionen die Referenz als Teil ihrer Funktionsweise schließen, sodass Sie die Funktion "Referenz schließen" nicht aufrufen müssen.
| Aktion | Ergebnis |
|---|---|
| Verwendung der Methode Allgemein:Löschen | Schließt die Referenz auf das gelöschte Objekt |
| Verwendung der Methode GObject:Ersetzen | Schließt die Referenz auf das ersetzte Objekt |
| Schließen einer Referenz auf ein VI | Kann Referenzen auf die Objekte des VIs ungültig machen |
Objekte
Zum Erstellen des Skripts benötigen Sie folgende Objekte:
Vorgehensweise
Bevor Sie beginnen: Öffnen Sie das VI "Closing References.vi" im Verzeichnis labview\examples\Application Control\VI Scripting\Managing References. In diesem Beispiel-VI wird jeder Schritt der folgenden Vorgehensweise dargestellt.
- Ermitteln Sie Referenzen auf VIs und VI-Objekte im Blockdiagramm des Skript-VIs. Ignorieren Sie die zuvor genannten Referenztypen, die Sie nicht schließen müssen.
Details zum Beispiel
Im folgenden Beispiel öffnet das Skript-VI eine Referenz an folgenden Stellen:
- VI-Referenz öffnen—Öffnet eine Referenz auf das Ziel-VI.
- GObjects suchen—Öffnet eine Referenz auf jedes Funktionsobjekt im Ziel-VI.
- Funktion:Anschlüsse[]—Öffnet Referenzen auf alle Anschlüsse aller Funktionen.
- Anschluss:AngeschlosseneVbdg—Öffnet eine Referenz auf die Verbindung, die mit jedem Anschluss verbunden ist.
- Verbindung:Anschlüsse[]—Öffnet Referenzen auf alle Anschlüsse einer Verbindung.
- Funktion:Ersetzen—Öffnet eine Referenz auf die Ersatzfunktion.
- Funktion:Anschlüsse[]—Öffnet Referenzen auf alle Anschlüsse der Ersatzfunktion.
- Bestimmen, wann LabVIEW die Referenzen zuletzt verwendet hat.
Beim Untersuchen der letzten Nutzung einer Referenz besteht immer eine Referenz auf einen Knoten, wenn Sie anhand einer Referenz auf einen Anschluss dieses Knotens verweisen.
Details zum Beispiel
Im folgenden Beispiel werden die geöffneten Referenzen zuletzt an folgenden Stellen verwendet:
- Ziel-VI-Referenz—Am Ende des VIs. Diese Referenz wird im gesamten VI verwendet, da die anderen geöffneten Referenzen auf Objekte im Ziel-VI verweisen.
- Funktionsreferenzen—Nach der Methode "Funktion:Ersetzen".
- Funktionsanschlussreferenzen—Nach der Methode "Anschluss:AngeschlosseneVbdg".
- Verbindungsreferenz—Nach der Methode "Verbindung:Löschen".
- Verbindungsanschlussreferenzen—Nach der Methode "Anschluss:Anschlüsse verbinden".
- Ersatzfunktionsreferenz—Nach der Methode "Funktion:Anschlüsse[]".
- Anschlussreferenzen für Ersatzfunktion—Nach der Methode "Anschluss:Anschlüsse verbinden".
- Verbinden Sie jede geöffnete VI-Referenz mit einer Funktion des Typs Referenz schließen, sobald LabVIEW eine Referenz auf das VI oder auf eines der Objekte nicht mehr benötigt. Wann welche Funktion des Typs "Referenz schließen" ausgeführt wird, kann anhand des Fehler-Cluster-Datenflusses ermittelt werden. Denken Sie daran, dass LabVIEW Referenzen bei bestimmten Arbeitsschritten automatisch schließt.
Empfehlungen und Warnungen
- Schließen Sie Objektreferenzen sobald Sie die Objektreferenzen innerhalb des VIs nicht mehr benötigen—Beim Schließen einer Referenz auf ein VI können alle geöffneten Referenzen auf Objekte des VIs ungültig werden. Sie können eine VI-Referenz erst bedenkenlos schließen, wenn sowohl die VI-Referenz als auch die Objektreferenzen nicht mehr benötigt werden.
- Schließen Sie Referenzen so bald wie möglich—LabVIEW wird langsamer ausgeführt, wenn zu viele Referenzen geöffnet sind. Die verlangsamte Ausführung ist speziell bei großen Anwendungen problematisch. Wenn Sie Referenzen frühstmöglich schließen, verbleiben sie nicht unnötigerweise im Arbeitsspeicher.
- Schließen Sie Referenzen nach Möglichkeit vor dem Ausführungsende eines VIs—LabVIEW schließt nach dem Ausführungsende eines VIs automatisch alle Referenzen in diesem VI. Ein manuelles Schließen der Referenzen zu diesem Zeitpunkt ist daher wenig sinnvoll.
Weitere Beispiele
Ein Beispiel zum Schließen von Referenzen mit VI-Skripten ist das VI "Creating New VI From Scratch.vi" im Verzeichnis labview\examples\Application Control\VI Scripting\Creating VIs.