关于VB 6 中 DoEvents 导致主窗体关闭后程序无法退出的分析
2010-07-10 14:28
295 查看
1、VB中的窗体可以不用New直接通过窗体名称引用,因为应用程序级别,相当于模块全局变量自动有一个和窗体一样的变量名,实际是引用的这个全局的变量
2、窗体模块级的变量(也就是在窗体方法外的变量)生命周期跟窗体变量一致,不会因为 Form_Unload 而释放,Form_Unload 释放的仅是窗体界面资源
3、在窗体 UnLoad 之后,调用窗体任何已经释放的windows资源将会导致窗体重新 Load
4、DoEvents(一般在循环中 会导致程序在为执行完当前过程的情况下相应窗体事件,导致窗体 Unload ,过程继续执行导致 窗体资源无法被完全释放,程序无法退出。
5、解决办法:设置全局变量 gIsExit,用Sub main() 启动程序,程序启动后设置 gIsExit = False,当Form Unload 设置 gIsExit =true;DoEvents 执行完毕之后判断一下gIsExit ,if gIsExit then Unload me exit sub. 这样就可以正常退出了。
2、窗体模块级的变量(也就是在窗体方法外的变量)生命周期跟窗体变量一致,不会因为 Form_Unload 而释放,Form_Unload 释放的仅是窗体界面资源
3、在窗体 UnLoad 之后,调用窗体任何已经释放的windows资源将会导致窗体重新 Load
4、DoEvents(一般在循环中 会导致程序在为执行完当前过程的情况下相应窗体事件,导致窗体 Unload ,过程继续执行导致 窗体资源无法被完全释放,程序无法退出。
5、解决办法:设置全局变量 gIsExit,用Sub main() 启动程序,程序启动后设置 gIsExit = False,当Form Unload 设置 gIsExit =true;DoEvents 执行完毕之后判断一下gIsExit ,if gIsExit then Unload me exit sub. 这样就可以正常退出了。
相关文章推荐
- VB.NET关闭窗体时最小化(附带解决.NET程序导致XP无法关机重启的问题)
- 关于程序退出无法关闭所有界面问题 通过广播使Android程序完全退出
- 关于SIGPIPE导致的程序退出
- 透明窗体程序在XP系统下任务栏无法右键关闭程序
- 关于GDI资源使用后未释放,导致GDI对象猛增,程序花屏,异常退出的问题
- 关于SIGPIPE导致的程序退出
- 关于tomcat服务器部署,页面报404/500错误,myeclipse异常关闭 导致tomcat 6.0 无法重启 的问题
- 关于SIGPIPE导致的程序退出
- C# WinForm程序中,使用多线程,在关闭窗体时 怎么关闭窗体的所有线程,使程序退出。
- 需求:需要在许多子窗体中关闭/退出整个程序(WPF)
- 关于SIGPIPE导致的程序退出
- C#之窗体的关闭和程序的退出...
- 关于SIGPIPE导致的程序退出
- 关于SIGPIPE导致的程序退出
- 关于双核开发环境的程序无法运行的分析方法(ti的双核)
- C#窗体程序,当窗口关闭后,进程无法关闭解决方法
- C#开发WinForm窗体程序时,如何在子窗体中关闭窗口时并退出程序?
- 修正ActiveMQ C++客户端(CMS)当服务器关闭程序无法退出问题
- winform窗体关闭程序退出实现
- JLINKV8更新固件后下载程序导致MDK5.0关闭解决方法及Jlink无法识别修复方法