Таймер все еще работает после выгрузки формы - PullRequest
1 голос
/ 02 марта 2012

я получил код в 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 ]

1 голос
/ 06 марта 2012

Таймеры срабатывания после того, как родительская форма выгружена, является распространенной проблемой в VB6.Сообщение WM_TIMER может быть отправлено во время выполнения кода VB6, который выгружает формы.Это приводит к тому, что событие поднимается поздно.Объявите частное логическое значение mbIsLoaded на уровне формы.Присвойте его True в Form_Load и False в Form_Unload.В вашем обработчике событий таймера сделайте вашу первую строку кода: If mbIsLoaded Then Exit Sub.

0 голосов
/ 02 марта 2012

Если таймер срабатывает после выгрузки формы, что-то вызывает перезагрузку формы, ИЛИ загружаются два экземпляра формы.

В первом случае попробуйте добавить точку останова в событие Form_Load и пошагово пройти по коду выгрузки, чтобы увидеть, что его вызывает.

Во втором случае убедитесь, что вы ИСПОЛЬЗУЕТЕ ИЛИ неявную глобальную ссылку "game" для формы, ИЛИ create используете явную локальную ссылку для хранения загруженной формы. Я ожидаю, что вы все еще используете неявную глобальную ссылку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...