Вот решил написать небольшой материал про 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 секунд. Это меня полностью устроило и процессор не загружает и работает отлично, короче свою задачу я выполнил как раз с использованием вот этого примера. Надеюсь все, что здесь я показал, Вам пригодиться. Вы можете все это использовать как для простого «ожидания», так и для периодического выполнения чего-нибудь.