必需: 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。

  1. 在脚本VI的程序框图上找到VI和VI对象的引用。忽略前面提到的不需要关闭的引用类型。

    范例详细信息

    在该例中,脚本VI在下列位置打开引用:

    • 打开VI引用 - 打开目标VI的引用
    • 遍历图形对象 - 打开目标VI中各个函数对象的引用
    • 函数:接线端[] - 打开各个函数接线端的引用
    • 接线端:已连接连线 - 打开连接至各个接线端的连线的引用
    • 连线:接线端[] - 打开各个连线的引用
    • 函数:替换 - 打开替换函数的引用
    • 函数:接线端[] - 打开各个替换函数接线端的引用
  2. 确定这些引用最后使用的位置。

    跟踪引用的数据流时,如要引用节点的接线端,需先打开对节点的引用。

    范例详细信息

    在该例中,打开的引用在下列位置最后一次使用:

    • 目标VI引用 - VI的结束位置。其他引用都是在目标VI的引用之下,所以LabVIEW在整个VI中都会使用目标VI的引用。
    • 函数引用 -“函数:替换”方法之后
    • 函数接线端引用 -“接线端:已连接连线”方法之后
    • 连线引用 -“连线:删除”方法之后
    • 连线接线端引用 -“接线端:连线”方法之后
    • 替换函数引用 -“函数:接线端[]”方法之后
    • 替换函数的接线端引用 -“接线端:连线”方法之后
  3. 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。