最近我连续开发了几个系统,在退出系统的时候都出现了不能完全退出的情况。具体情形是:点击“退出”菜单项后,系统表面上看是退出了,此时如果用任务管理器查看,却发现系统依然驻留于内存之中。而且系统若连续进入-退出N次,则用任务管理器查看内存中就驻留有N个此系统。最初我考虑是不是退出时什么对象没有卸载完,在VB中对源程序进行调试却又发现这个问题并非每次退出系统都出现,其出现好像是随机的,很难找到原因。编译执行后该问题的发生频率明显增加,几乎每次退出都有此问题。我不可能叫用户每次退出系统后都打开任务管理器去卸载驻留在内存中的程序吧。这究竟是什么原因呢,如何改正?请各位高手赐教!谢谢,分不够可再加!!!
如果有对象打开,则 set obj=nothing
'再结束程序
end
这种方法只能是将当前窗口隐蔽而不能卸载,在程序的结束时应用end来结束程序
退出前将所有的对象释放掉(set obj=nothing)
特别是涉及到excel的打开更应如此
2﹐如果用到數據庫連接﹐請關閉的時候用set conn=nothing進行完全關閉。
3﹐用到某控件﹐特別是外部控件﹐要看到底是怎么關。如果是于硬件連接的部分﹐沒有關的話﹐會沖突很麻煩。
其實必須要明白﹐窗體關閉的時候一定會經過unload,最后經過Terminate事件。如果你把unload的Cancel設置false﹐請一定在關閉的時候設置回true。否則它永遠都沒有關閉。
最后是個人遇見的一次﹐因為習慣在unload下全部關閉﹐用end﹐但是事實會出現非法操作﹐所有真正end掉程序應該寫在Terminate事件中。這話貼第3次了﹐因為我真的懶得寫了。
set obj=nothing
我几个系统用End就OK了!
所以用end 比较好,
还有 用 App.PrevInstance 来判断 程序是不是已运行了
再有在程序之前要检查是不是打开了对象,用set obj=nothing把源释放。
在主窗体结束前加上End。