我有一个功能需要在VB.net中使用计时器每15分钟运行一次。动态分配计时器间隔
但目前这里的挑战是,如果我开始计时,说上午2:00,实际的功能将在2点15分之后,相同的功能,每15分钟执行执行。
我有一子“定时器”,其中启动计时器和AddHandler的操作要求每15分钟的“ONhandler”功能。
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,45分钟准确启动计时器。假设我在1:55启动应用程序,逻辑将确保应用睡,直到它达到2:00 AM和2:00 AM,该计时器将开始。 15分钟后,即2:15 AM,该功能将被执行。
但我需要的是,我不希望我的申请从2:00到2:15等待15分钟。相反,它应该在2:00进行处理,然后启动计时器。为了克服这个问题,我添加了一个名为AddHandler方法的新函数“onhandler”,它执行相同的过程。
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
}
实施新的逻辑, 如果我在上午01点55开始申请后,我的应用程序会一直睡到上午02点之后,Onhandler()内的子方法会执行第一,它会在2:01Am完成。 现在定时器启动15分钟,下一组过程在2:16 AM执行,因为定时器设置为15分钟的时间间隔。但我需要我的流程在凌晨2:15运行。换句话说,定时器间隔必须为14分钟而不是15分钟。
另一个例子是,我在上午03时启动该应用程序,并且如果它在3终止:上午03点,那么时间必须有12分钟的间隔,而不是15分钟,为下一次运行。
是否有任何方法可以使定时器间隔动态为每个过程完成基于过程结束时间?
PS:我是DotNet的新手,在过去的几天里,我一直在这个问题上喋喋不休。伙计们,请在这里帮助我。
在此先感谢, 马杜。
一个奇怪的VB.net你使用所有那些花括号和没有End Sub,...? – IvanH