【发布时间】:2013-05-11 21:29:52
【问题描述】:
我有一个函数需要使用 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 处理,然后启动计时器。为了克服这个问题,我添加了一个新的函数“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,之后 sub 内部的 Onhandler() 方法将首先执行,并将在凌晨 2:01 完成。 现在定时器启动 15 分钟,下一组进程在凌晨 2:16 执行,因为定时器设置为 15 分钟间隔。但我需要我的进程在凌晨 2:15 准确运行。换句话说,定时器间隔必须是 14 分钟而不是 15 分钟。
另一个例子是,我在凌晨 3 点启动应用程序,如果它在凌晨 3:03 结束,那么下次运行的时间间隔必须是 12 分钟而不是 15 分钟。
有没有办法根据进程结束时间使每次进程完成时的定时器间隔动态???
PS:我是 DotNet 的新手,过去几天一直在思考这个问题。伙计们,请在这里帮助我。
提前致谢, 马杜。
【问题讨论】:
-
您在使用所有这些花括号且没有 End Sub 的 VB.net 多么奇怪,...?