通过重启管理器关闭时,VB6应用程序会锁定

时间:2012-06-25 14:28:45

标签: vb6 installation

我在通过Windows Restart Manager关闭VB6应用时遇到问题。 在Inno设置中使用新的Restart Manager支持时非常明显,甚至在编译空的VB6项目时也会出现这种情况。

当我将记录添加到QueryUnloadUnload事件时,我看到以下序列:

QueryUnload(vbAppWindows)
Unload()
QueryUnload(vbAppTaskManager)

在此之后,VB6进程似乎锁定在VB6运行时内部,并且调用Restart Manager的进程最终会超时并放弃。

据报道,类似的问题before没有明显的解决方案。

1 个答案:

答案 0 :(得分:6)

2007年在Windows Application Compatability论坛上就此进行了讨论。

建议的解决方案是将其添加到主窗体的QueryUnload事件处理程序的末尾:

'For Vista Certification requirement.
'Handles TEST CASE 30. Verify the application is Restart Manager Aware.
If UnloadMode = vbAppWindows Then Unload Me

似乎VB6运行时没有正确处理其中一个关闭消息,因此重启管理器会发送一个更强的关闭消息,导致运行时锁定。

我已经使用相当复杂的多进程VB6应用程序确认了此修复程序,并且所有这些都正确关闭,没有明显的不良影响。