找回密码
 注册
Simdroid-非首页
查看: 542|回复: 4

[积分贴存推荐] 【原创】关于弹出窗口退出内存的问题解决方案 +2.6

[复制链接]
发表于 2004-6-18 16:20:18 | 显示全部楼层 |阅读模式 来自 湖北宜昌
在坛子里看到过类似的帖子发问,如:
【讨论】子程序前面板弹出后,主程序能通过编程退出内存吗?
,但都没有得到比较好的解决方法,我作了一些测试,从测试结果看,可以达到当子程序前面板消失之后,LabVIEW为自动回收子VI所占据的内存。可能有没有考虑到的地方,请大家指出,谢谢!
  
测试环境:
Memory Moniter:位于..\National Instruments\LabVIEW 7.0\examples\memmon.llb
LabVIEW 7.0
  
测试原理:
利用VI server技术实现动态调用。
有两个vi,一个为main.vi,另外一个为subvi.vi。subvi.vi设置为对话框模式(为方便对Memory Moniter.vi进行操作,设置subvi.vi为非模态对话框。subvi.vi为一个简单的实施趋势图显示对话框,当点击退出按钮之后退出对话框。main.vi有两个按钮,一个实现退出消息循环,另外一个实现呼出对话框。
  
测试步骤:
1、运行Memory Moniter.vi,并选择sort by >>VI name;
2、运行main.vi,点击Memory Moniter.vi中的Recalc按钮对内存中的VI进行重新统计,此时会看到main.vi会出现在VI Ring控件中,并没有Subvi.vi
3、点击“运行sub.vi”按钮,对话框出现,再次点击Memory Moniter.vi中的Recalc按钮对内存中的VI进行重新统计,此时会看到main.vi和subvi.vi均出现在VI Ring控件中。
4、点击sub.vi中的退出按钮,再次点击Memory Moniter.vi中的Recalc按钮对内存中的VI进行重新统计,此时会看到只有main.vi出现在VI Ring控件中。
  
从上可以看出,运用VI server动态调用的方法可以实现“子程序前面板弹出后,主程序能通过编程退出内存”这样的功能。
  
如果采用子函数调用的方式,则可以看出只要main.vi在内存中,则subvi.vi都在内存中。
  
另外,如果认为这样的方式仍然不保险,那么可以在sub.vi中调用Advanced>>Data Manipulation>>Request Deallocation.vi,该VI专门负责清除子VI的闲置内存。附件中的subByRequestDeallocation.vi就是用了这个vi的子vi。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

发表于 2004-6-19 20:39:10 | 显示全部楼层 来自 上海杨浦区

回复: 【原创】关于弹出窗口退出内存的问题解决方案

Simdroid开发平台
发表于 2004-6-20 10:50:54 | 显示全部楼层 来自 中国

回复: 【原创】关于弹出窗口退出内存的问题解决方案

不错
发表于 2004-6-22 09:05:59 | 显示全部楼层 来自 北京

回复: 【原创】关于弹出窗口退出内存的问题解决方案

keiran wrote:

能否实现当subvi.vi被调用时,main.vi退出内存或其界面隐藏不见!
发表于 2007-4-17 18:41:03 | 显示全部楼层 来自 江苏无锡
谢谢
辛苦了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-28 22:50 , Processed in 0.047495 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表