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

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

有帮助吗?

解决方案

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

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

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

在Sub Main中,实例化clsAppCleanup。

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

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top