1

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

VB6 应用程序使用加载初始屏幕的 Sub Main 过程,然后显示几个无模式窗体。当 Sub Main 完成时,应用程序仍在运行。应用程序如何检测到它正在关闭并调用 Toolkit 上的清理方法?

4

3 回答 3

3

在一个模块(可能与包含 Sub Main 的模块相同)中,创建一个公共 sub(例如 AppCleanUp)来保存您的清理代码。

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

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

在 Sub Main 中,实例化 clsAppCleanup。

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

于 2008-09-23T20:42:50.840 回答
0

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

于 2008-09-23T20:42:23.633 回答
0

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

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

于 2008-11-26T21:11:48.487 回答