我正在使用System.Timer来触发事件。目前我每隔1小时触发一次,检查它是否与配置的值(日,时间)匹配。
但是有可能在特定时间触发这个吗?比如假设在周日的12Am。
Windows任务计划程序更合适,但它不是一个选项。
提前致谢
答案 0 :(得分:9)
目前尚不清楚为什么你不将计时器的Interval设置为目标日期/时间。毫秒数有限制,最长可达2 ^ 31毫秒,27天。只要你能保持在那个范围内,你就会很好。
private static void SetTimer(Timer timer, DateTime due) {
var ts = due - DateTime.Now;
timer.Interval = ts.TotalMilliseconds;
timer.AutoReset = false;
timer.Start();
}
答案 1 :(得分:0)
计时器不支持这种间隔,但您可以每20秒查看当前日期和时间。
编辑很抱歉,您已经这样做了......为什么不在每次检查时留出一半的时间(A Zeno计时器)?
答案 2 :(得分:0)
在类似的情况下,我正在使用System.Threading.Timer来实现这一目标。基本上我将它的到期时间设置为desiredDateTime - DateTime.Now,以便它在expectDateTime上打勾。
如果同时获得另一个日期,则可以使用Timer.Change()将滴答时间更改为新日期。当你不再需要时,不要忘记Dispose()定时器!