SetTimer не работает в моем приложении vb6 - PullRequest
0 голосов
/ 04 января 2012

Я использую WinAPI, SetTimer и KillTimer в моем приложении vb6 (это устаревший проект). SetTimer возвращает правильный идентификатор события, но реальный обратный вызов не вызывается при заданном internval.

У меня есть

....
lngID = SetTimer(0, 0, 3000, AddressOf UpdateCallBack)

Public Sub UpdateCallBack(ByVal hWnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long)
......

UpdateCallBack иногда вызывается через несколько минут или даже часов спустя. Я слышал, что таймер - это сообщение с низким приоритетом, и оно обрабатывается, когда нет других сообщений для обработки. Есть ли способ получить сообщение для обработки? Если это невозможно с SetTimer, что я могу использовать?

Спасибо

Ответы [ 2 ]

1 голос
/ 04 января 2012

Приложение делает что-нибудь еще в то время, когда ожидается обратный вызов? Пока поток перекачивает сообщения, вы должны получить обратный вызов очень скоро после его запуска.

Если приложение занято, вам нужно запустить цикл сообщений, вызвав DoEvents.

0 голосов
/ 04 января 2012

Посмотрите эту тему: http://www.vbforums.com/showthread.php?t=546633

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