我有一个需要使用 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 和凌晨 2:00,计时器将启动。15 分钟后,即凌晨 2:15,函数将被执行。
但我需要的是,我不希望我的应用程序从 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
}
实现新逻辑后,如果我在凌晨 1:55 启动应用程序,我的应用程序将休眠到凌晨 2:00,之后 sub 内部的 Onhandler() 方法将首先执行,并将在凌晨 2:01 完成。现在定时器启动 15 分钟,下一组进程在凌晨 2:16 执行,因为定时器设置为 15 分钟间隔。但我需要我的流程在凌晨 2:15 准确运行。换句话说,定时器间隔必须是 14 分钟而不是 15 分钟。
另一个例子是,我在凌晨 3 点启动应用程序,如果它在凌晨 3:03 结束,那么下一次运行的时间间隔必须是 12 分钟而不是 15 分钟。
有什么方法可以根据流程结束时间使每次流程完成时的计时器间隔动态?
PS:我是 DotNet 的新手,过去几天一直在思考这个问题。伙计们,请在这里帮助我。
在此先感谢,马杜。