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


0

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

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

  0

*关闭 - 请校对。 23 9月. 082008-09-23 20:47:29

2

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

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

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

在Sub Main中,实例化clsAppCleanup。

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


0

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

  0

Unload事件发生在窗体中。该应用程序显示了几种形式。我正在寻找一个中心位置来检测该应用程序正在关闭,因为该应用程序中有超过400个表单。 23 9月. 082008-09-23 20:45:28


0

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

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