У меня есть функция, которую нужно запускать каждые 15 минут, используя таймер в VB.net.Динамическое назначение интервала таймера
Но вызов, присутствующий здесь, заключается в том, что если я запустил таймер, скажем, в 2:00 утра, фактическая функция будет выполнена в 2:15 утра, после чего одна и та же функция будет выполняться каждые 15 минут.
У меня есть вспомогательный таймер, в котором запускается таймер, и оператор Addhandler вызывает функцию ONhandler на каждые 15 минут.
private mytimer as timer
private sub Timer()
{
with mytimer
.autoreset=true
.enabled=true
.interval=900000
.start
end with
AddHandler mytimer.elapsed ,assressof onhandler
console.readkey()
}
onhandler(byval source as oblject,byval e as elapsedeventargs)
{
Performs the DB operations.
}
Изначально у меня была пара логики, которая начала таймер точно каждые 00,15,30,45th минут каждого и каждый час. Предполагая, что я запустил приложение в 1:55 утра, логика обеспечит, чтобы приложения спали, пока он не достигнет 2:00 утра, а в 2:00 утра начнется таймер. Через 15 минут, т.е. через 2:15, функция будет выполнена.
Но мне нужно, я не хочу, чтобы мое приложение ожидало 15 минут с 2:00 до 2:15. Вместо этого он должен обработать в 2:00, а затем запустить таймер. Чтобы преодолеть это, я включил новую функцию «onhandler» с тем же именем метода AddHandler, который выполняет тот же процесс.
private sub Timer()
{
onhandler() ****New function namesd as AddHandler method
with mytimer
.autoreset=true
.enabled=true
.interval=900000
.start
end with
AddHandler mytimer.elapsed ,assressof onhandler
console.readkey()
}
onHandler()
{
Do same DB function
}
После внедрения новой логики, если я запустить приложение в 1:55 утра, мое приложение будет спать до 2:00 утра, после чего Onhandler() метод внутри подразделам будут выполнены первым, и было бы Завершите 2: 01Am. Теперь таймер запускается в течение 15 минут, а следующий набор процессов выполняется в 2:16 AM, когда таймер установлен на 15-минутный интервал. Но мне нужно, чтобы мой процесс выполнялся ровно в 2:15. Другими словами, интервал таймера должен составлять 14 минут, а не 15 минут.
Другим примером является то, что я запускаю приложение в 3 утра, а если оно заканчивается на 3: 03Am, то для следующего прогона время должно составлять 12 минут, а не 15 минут.
Есть ли способ сделать интервал таймера динамическим для каждого процесса, когда процесс будет завершен в зависимости от времени окончания процесса ???
PS: Я новичок в DotNet и в течение последних нескольких дней трескаю голову по этой проблеме. Ребята, любезно помогите мне здесь.
Заранее благодарен, Madhu.
Какой странный VB.net вы используете со всеми этими фигурными скобками и без End Sub, ...? – IvanH