当使用引用节点异步调用时,VI的执行在Open VI Reference Function被挂起



主要软件: LabVIEW Development Systems>>LabVIEW Base Development System
主要软件版本: 2013
主要软件修正版本: N/A
次要软件: LabVIEW Development Systems>>LabVIEW Full Development System, LabVIEW Development Systems>>LabVIEW Professional Development System

问题:
运行或者停止我的LabVIEW程序之后,如果我尝试重新运行程序,LabVIEW程序挂起于Open VI Reference Function。如果出现这种现象,当你关闭你的项目,LabVIEW将保留在Windows任务栏中,但是允许你回到开始界面。
我如何修复这个问题?

解答:
这是由于异步调用VI时引起的一个问题,这将导致LabVIEW程序在Open VI Reference Function挂起。当使用Start Asynchronous Call Node时该问题会出现并且依赖于当应用程序停止时LabVIEW去关闭引用。此时即使看起来您的代码已经被停止了,LabVIEW的库和类也将保持锁住状态。这个问题被CAR 492898追踪。
虽然这个问题可能不会影响所有以这种方式实现的应用程序,NI推荐您使用Close Reference Function来手动的关闭引用。
注意:如果您可以关闭您的项目并返回到LabVIEW的开始界面,那么这种方法不适用于您的代码。在那种情况下,似乎是由于您的一个VI没有收到您其他应用程序的停止请求。
执行框架(Actor Framework
LabVIEW 2013和之后的版本,执行框架(Actor Framework)使用Start Asynchronous Call Node加载操作并且特意地把关闭引用依赖于LabVIEW。在这种条件下,可能会造成之前的那种现象。
如果您使用执行框架(Actor Framework),一个变通的方案是在加载了一个操作后手动的关闭引用,这在附件中的VI中已经实现了。把附件中的VI添加到<LabVIEW Directory>\vi.lib\ActorFramework\Actor目录下,但是要注意把原先的VI做好备份以便未来的参考。
以下的VI需要根据相应的LabVIEW版本替换:


相关链接: LabVIEW 2014 Help: Start Asynchronous Call Node
NI Community: Actor Framework

附件:


Actor_Framework_VIs.zip - Actor_Framework_VIs.zip


报告日期: 09/19/2014
最近更新: 01/03/2015
文档编号: 6PIA9ESL