Код:
Public Declare Function GetTickCount Lib "kernel32" () As Long
Public ExitDelay As Boolean 'Флаг, отвечающий за выход из Delay
Public AutoCheckRun As Boolean 'Флаг сообщает, работает ли автотест
Public ExitAutoCheck As Boolean 'Флаг сообщает, нужно ли закончить автотест
Public Sub Delay(ByVal DelayInSeconds As Long)
Dim StartTimeMark As Long
Dim EndTimeMark As Long
StartTimeMark = GetTickCount
Do While EndTimeMark - StartTimeMark < DelayInSeconds * 60000
If ExitDelay = True Then Exit Sub
DoEvents
EndTimeMark = GetTickCount
Loop
End Sub
Процедура вызова:
Private Sub AutoCheck()
AutoCheckRun = True
Do While ExitAutoCheck = False
Delay 10 'Задержка в 10 минут
MsgBox "трам-пам-пам"
Loop
AutoCheckRun = False
End Sub
Код выводит мессадж каждые 10 минут, до тех пор пока ExitAutoCheck не = True
странный эффект: При вызове AutoCheck и соответственно Delay из неё, проц уходит в 100% загрузки.
Замена на простой таймер не катит, т.к. требуются задержки до нескольких дней.
Подскажите решение, чтобы проц не грузило или альтернативу моему Delay, но с возможностью установки задержки в несколько минут/часов