最大定时器间隔

时间:2009-10-26 13:28:36

标签: c# .net

计时器的最大间隔为2,147,483,647。这是大约25天。但根据我的要求,我需要计时器等待30天。我该如何解决?请帮忙。

9 个答案:

答案 0 :(得分:23)

为此使用System.Threading.Timer。对于long,有一些构造函数采用uintTimeSpanint而不是dueTime。任何这些都可以让你设定30天的时间。

更新:这是最简单的方法:

System.Threading.Timer _timer;
public void Start30DayTimer()
{
    TimeSpan span = new TimeSpan(30, 0, 0, 0);
    TimeSpan disablePeriodic = new TimeSpan(0, 0, 0, 0, -1);
    _timer = new System.Threading.Timer(timer_TimerCallback, null, 
        span, disablePeriodic);
}

public void timer_TimerCallback(object state)
{
    // do whatever needs to be done after 30 days
    _timer.Dispose();
}

答案 1 :(得分:14)

int days = 30;

创建一段时间的计时器。

每次计时器触发时减少days

答案 2 :(得分:10)

您可以随时让计时器等待更短的时间,例如一天,每次计时器触发增加计数器并检查计数器的当前值。如果值为30,则执行应该每30天运行一次的代码。

更好的想法是将值设置在外部文件中的某个位置,以便在程序意外退出时,您可以从中断的位置继续。理想情况下,您可能希望将下一个运行日期放在文件中,这样如果程序关闭多天,您可以恢复并在正确的日期启动它,而不必担心上次运行的时间。像

这样的东西

NextRunDate = 10/10/2009 4:40 PM

程序运行时,将日期提前30天。

答案 3 :(得分:4)

这是一个计时器,告诉您应用程序更适合实现为计划任务。

答案 4 :(得分:4)

我强烈建议使用Windows Scheduled Task功能,特别是如果这是为了在每个月的同一天运行某些内容,因为月份在28到31天之间不等。

答案 5 :(得分:3)

当你想要执行任何事情时,将日期时间变量设置为日期时间...然后只需每分钟检查一次计时器(或任何你所要求的准确度级别),看看该日期时间是否已过去......

答案 6 :(得分:1)

要使用计时器,您还需要一个应用程序和一台不间断运行30天以上的PC。并非不可能,但风险很大。

听起来你想要预定的执行某事。计算目标日期/时间并将其保留为XML或.config文件。当应用程序重新启动时,它可以重新计算TimeSpan以触发事件。

答案 7 :(得分:1)

Quartz.NET库是按计划运行代码的另一种选择。

答案 8 :(得分:0)

计时器构造函数将使用TimeSpan,这是int64,当然是超过25天?

您是否还认为系统可能不会停留30天?

只是查了一下,这是10,675,199天。