Места другого цикла внутри цикла.
В этом внутреннем цикле вы ждете оставшегося времени, и если вы не останетесь, вы продолжите.
Я использовал API GetTickCount для этого, который использует миллисекунды в качестве входных данных Althought его точность зависит от разрешающей способности тактовой
Option Explicit
Private Declare Function GetTickCount Lib "kernel32"() As Long
Private mblnRun As Boolean
Private Sub Command1_Click()
StartLoop
End Sub
Private Sub Command2_Click()
StopLoop
End Sub
Private Sub StartLoop()
Dim lngStart As Long
mblnRun = True
Do While mblnRun
'store start time
lngStart = GetTickCount
'do your actions
DoSomething
'wait for the remaining time
Do While GetTickCount < lngStart + 2000
'wait until 2 seconds are passed since the start of this loop cycle
DoEvents
Loop
Loop
End Sub
Private Sub StopLoop()
mblnRun = False
Caption = "Stopped : " & CStr(Now)
End Sub
Private Sub DoSomething()
Caption = "Running : " & CStr(Now)
End Sub
До тех пор, как mblnRun
это True
цикл продолжает работать
использовать таймер для вызова события. вычислить 'Интервал' на основе этого' определенного количества раз ' – Plutonix
Насколько точны вам быть, потому что петли в секунду не обязательно то, что вы можете точно указать. Это в основном из-за потенциальной продолжительности цикла, превышающего (однократное потребление времени цикла) в секунду. Затем вам нужно учитывать многопоточность и время ожидания потока. –
У вас есть три разных языка, отмеченные на ваш вопрос: выберите один –