Visual Basic – периодическое выполнение определенной задачи

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

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
Нажимая на кнопку «Отправить комментарий», я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.