异步调用VI并收集被调VI的执行结果
- 更新时间2025-08-27
- 阅读时长3分钟
打开异步被调VI的引用时,必须确定是否要收集被调VI的执行结果。本文档介绍如何异步调用一个VI并收集该VI的执行结果。在其他编程语言中,该调用类型也被称为fork-and-join。除此方法之外,还可以调用VI但是不收集VI调用的结果。
使用的对象
使用下列程序框图对象,开始对VI进行动态调用,稍后收集VI的输出:
操作步骤
创建下列程序框图,异步调用VI,稍后收集VI的执行结果。

下面列出了上述程序框图的要点。
说明和建议
-
中止VI - 中止VI时应考虑下列因素:
- 如中止的VI打开了一个调用和收集类型的VI引用,LabVIEW自动关闭引用并中止被调VI的所有运行实例。
- 如中止了调用并收集类型VI引用指向的一个VI实例,一个等待异步调用节点会返回错误,表示被调VI被中止。其他等待异步调用节点继续等待。
- 如在调用和收集VI引用上执行中止方法,LabVIEW将会中止VI的所有实例。相应数量的等待异步调用节点将返回错误。
- 如打开了一个调用和收集类型的VI引用的VI执行完毕,LabVIEW自动关闭引用并中止被调VI的所有运行实例。
- 如在一个VI引用上开始了多个异步调用,不能直接确定VI返回的是哪个等待异步调用节点返回的输出。如要获知VI返回的是哪个实例的输出,可为VI调用分配一个标识符。
延伸:从多个调用唯一VI引用中收集输出
下列程序框图是一个模板,用于异步调用多个VI,然后收集VI输出。因为每个异步调用都是唯一的VI引用,每个等待异步调用节点将等待特定的VI调用完成。该模板用于创建一个主用户界面,主用户界面的内容表示不同子VI的前面板。

范例
关于异步调用VI稍后收集结果的范例,请参考labview\examples\Application Control\VI Server\Asynchronous Call By Reference目录下的Asynchronous Call and Collect VI。