在特定日期和时间使用计时器触发事件

时间:2011-01-24 20:05:02

标签: c# timer scheduled-tasks

我正在使用System.Timer来触发事件。目前我每隔1小时触发一次,检查它是否与配置的值(日,时间)匹配。

但是有可能在特定时间触发这个吗?比如假设在周日的12Am。

Windows任务计划程序更合适,但它不是一个选项。

提前致谢

3 个答案:

答案 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()定时器!