通过VI脚本关闭VI和VI对象的引用
- 更新时间2025-08-27
- 阅读时长4分钟
必需: VI脚本
所有VI脚本任务都要求用户打开VI和VI对象的引用,以创建、编辑或查看VI或VI对象。使用返回引用的VI、函数或属性创建或打开一个属性。只要引用被打开,LabVIEW就无法将引用的对象从内存中移除。当打开大量引用时,内存中就会存在大量VI和VI对象,LabVIEW的运行速度会减慢。当没有更多内存可用时,甚至无法创建新VI和对象。要避免此类性能降低的问题,应在脚本VI中及时关闭VI或对象的引用。
打开下列引用不会影响性能,所以不必关闭下列引用:
- 从GObject继承的引用
- 静态引用:本VI或本应用程序
使用关闭引用函数关闭创建或打开的引用。请注意,下列操作将关闭引用作为其操作的一部分,无需额外调用关闭引用函数。
| 操作 | 结果 |
|---|---|
| 使用通用:删除方法 | 关闭对待删除对象的引用 |
| 使用GObject:替换方法 | 关闭对要替换的对象的引用 |
| 关闭对VI的引用 | 可能会使对VI内对象的引用无效 |
使用的对象
VI脚本任务需用到下列对象:
操作步骤
准备:关于下列步骤的范例,见labview\examples\Application Control\VI Scripting\Managing References目录下的Open the Closing References VI。
- 在脚本VI的程序框图上找到VI和VI对象的引用。忽略前面提到的不需要关闭的引用类型。
范例详细信息
在该例中,脚本VI在下列位置打开引用:
- 打开VI引用 - 打开目标VI的引用
- 遍历图形对象 - 打开目标VI中各个函数对象的引用
- 函数:接线端[] - 打开各个函数接线端的引用
- 接线端:已连接连线 - 打开连接至各个接线端的连线的引用
- 连线:接线端[] - 打开各个连线的引用
- 函数:替换 - 打开替换函数的引用
- 函数:接线端[] - 打开各个替换函数接线端的引用
- 确定这些引用最后使用的位置。
跟踪引用的数据流时,如要引用节点的接线端,需先打开对节点的引用。
范例详细信息
在该例中,打开的引用在下列位置最后一次使用:
- 目标VI引用 - VI的结束位置。其他引用都是在目标VI的引用之下,所以LabVIEW在整个VI中都会使用目标VI的引用。
- 函数引用 -“函数:替换”方法之后
- 函数接线端引用 -“接线端:已连接连线”方法之后
- 连线引用 -“连线:删除”方法之后
- 连线接线端引用 -“接线端:连线”方法之后
- 替换函数引用 -“函数:接线端[]”方法之后
- 替换函数的接线端引用 -“接线端:连线”方法之后
- LabVIEW最后一次使用VI引用或对象引用完成后,请将打开的引用连接至关闭引用函数。LabVIEW执行关闭引用函数时,可使用错误簇控制数据流。关闭引用时,要知晓关闭引用操作的结果。
说明和建议
- 在关闭VI引用之前先关闭VI中对象的引用 - 关闭VI引用可能会使VI中其他对象的引用失效。VI引用和VI中对象的引用全部使用结束后,可安全关闭对VI的引用。
- 及时关闭引用 - 打开太多引用会使LabVIEW运行速度变慢。这种影响对较小的程序并不明显,对较大的程序影响更明显。如在程序中及时关闭引用,冗余的对象就可及时从内存中移除。
- 在VI执行结束执行关闭引用 - LabVIEW在VI执行完毕后会自动关闭VI中的引用。在VI结束时关闭引用并不能提高程序的性能。
其他范例
关于使用VI脚本关闭引用的更多范例,见labview\examples\Application Control\VI Scripting\Creating VIs目录下的Creating New VI From Scratch VI。