Вот решил написать небольшой материал про Visual Basic, а если быть конкретней про то, как в Visual Basic можно реализовать периодическое выполнение определенного действия, т.е. через заданный промежуток времени.
Недавно у меня возникла необходимость написать на Visual Basic программу, которая постоянно была запущенна и через определенный промежуток времени выполняла нужное мне действие. Первое что пришло мне в голову это использовать таймер, но как оказалось в Visual Basic максимальный интервал в таймере можно задать только примерно 65 секунд, а мне нужно было гораздо больше, например час или два. Поэтому пришлось искать другие варианты использования таймера или даже без таймера. И сейчас я о них расскажу и конечно приведу примеры.
Первую альтернативу, что я нашел это использование sleep, т.е. программа как бы замирает на определенный промежуток времени, а потом продолжает работать, другими словами это как бы функция «ожидания» в программе. Хотел применить это вместе с таймером, и у меня получилось, как раз то, что мне нужно было, все работало, но был один и очень большой минус, почему-то программа когда «засыпала» (уходила в режим «ожидания») очень сильно загружала мой процессор, меня это конечно не устроило, поэтому я и отказался от этого способа. Приведу пример с использованием sleep. Создайте стандартный проект и в код форму вставьте следующее:
Sub Sleep(PTime As Long)
Dim Start, Finish, TotalTime
Start = Timer
Do While Timer < Start + PTime
DoEvents
Loop
Finish = Timer
TotalTime = Finish - Start
End Sub
Private Sub Form_Load()
Sleep (5)
MsgBox "После запуска программы прошло 5 секунд"
End Sub
Программа запускается, ждет 5 секунд, выдает сообщение о том, что прошло 5 секунд и уже потом, запускается сама форма. Вы, конечно, можете и в другом месте использовать задержку.
Практически тот же эффект я получил с использованием sleep через API. Для этого создайте стандартный проект и добавьте следующий код:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Form_Load()
Sleep (5000)
MsgBox «После запуска программы прошло 5 секунд»
End Sub
Вызывать задержку можно также с помощью sleep (5000) только уже в миллисекундах.
Для моей задачи эти способы не устраивали меня, и я продолжал искать и изобретать. И нашел, очень интересный пример, который как раз отлично подходил для моей задачи. Создайте стандартный проект и добавьте на форму таймер. И вставьте следующий код:
Private Sub Form_Load()
Timer1.Interval = 1000
End Sub
Private Sub Timer1_Timer()
Static EventCount As Long
EventCount = EventCount + 1
If EventCount = 5 Then ' 5 это в секундах
DoSomething
EventCount = 0
End If
End Sub
Private Sub DoSomething()
MsgBox «Прошло 5 секунд»
End Sub
После запуска программы у Вас будет появляться сообщение о том, что «Прошло 5 секунд» соответственно через каждые 5 секунд. Это меня полностью устроило и процессор не загружает и работает отлично, короче свою задачу я выполнил как раз с использованием вот этого примера. Надеюсь все, что здесь я показал, Вам пригодиться. Вы можете все это использовать как для простого «ожидания», так и для периодического выполнения чего-нибудь.
