当应用程序关闭时,无模式VB6应用程序如何进行清理?

时间:2008-09-23 20:36:55

标签: winforms vb6 interop com-interop

VB6应用程序正在使用Interop Forms Toolkit来处理用.NET编写的表单。该工具包的文档建议在VB6应用程序关闭时调用工具包上的方法来建议工具包。

VB6应用程序使用Sub Main过程加载启动画面,然后显示几种无模式窗体。 Sub Main完成后,应用程序仍在运行。应用程序如何检测它正在关闭并在Toolkit上调用清理方法?

3 个答案:

答案 0 :(得分:3)

在一个模块(可能是包含Sub Main的模块)中,创建一个包含清理代码的公共子(例如AppCleanUp)。

在项目中添加一个类(例如clsAppCleanup)。在此类中,在Class_Terminate事件处理程序中添加代码,该处理程序调用您在上一步中创建的子代。

在一个模块(可能是包含Sub Main的模块)中,定义一个clsAppCleanup的变量。

在Sub Main中,实例化clsAppCleanup。

当应用程序关闭时,类上的terminate事件将导致清理代码运行。

答案 1 :(得分:0)

自从我在VB6中编写以来已经有一段时间但是如果我没记错的话你可以使用Unload事件来调用你的清理代码(类似于.net中的结束事件)。您还可以检查VB6应用程序中是否还有其他表单仍在运行

答案 2 :(得分:0)

创建一个包含FormCount变量的模块。此变量将由应用程序中的所有表单共享。在每个窗体的Form_Initialize方法中增加FormCount变量。在每个表单的Form_Terminate方法中减少FormCount。当FormCount回退到0时,您可以通知表单工具包已卸载表单。

您不必担心多线程问题,因为VB6会创建单线程应用程序,因此一个表单的Initialize(或Terminate)方法将在任何其他表单开始执行之前运行完毕。