卸载表单后计时器仍在运行

时间:2012-03-02 14:08:37

标签: vb6 timer

我在vb6中得到了一个代码:

If KeyCode = vbKeyEscape Then
        i = MsgBox("you want to quit?", 4)
        If i = 6 Then
            Timer1.Enabled = False
            Unload Me
        End If
 End If

表单卸载和10秒间隔后,仍然执行了计时器事件。 此代码除主表单外还有其他形式。

2 个答案:

答案 0 :(得分:1)

在卸载父窗体后触发定时器是VB6中的常见问题。在运行卸载表单的VB6代码时,可以调度WM_TIMER消息。这导致事件迟到。在表单级别声明一个私有布尔值mbIsLoaded。将其分配到True中的Form_LoadFalse中的Form_Unload。在您的计时器事件处理程序中,将其设为第一行代码:If mbIsLoaded Then Exit Sub

答案 1 :(得分:0)

如果计时器在卸载表单后触发,则会导致重新加载表单,或者有两个表单实例已加载。

对于第一种情况,尝试在Form_Load事件中添加断点并单步执行卸载代码以查看触发它的内容。

对于第二种情况,请确保使用EITHER表单的隐式“游戏”全局引用,或者创建使用显式本地引用来保存已加载的表单。我希望您仍然使用隐式全局引用。