最大定时器间隔

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

为此使用System.Threading.Timer 。 对于dueTime ,有一些构造函数需要long ,a uintTimeSpan而不是int 。 任何这些都可以让你设置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(); } 
 int days = 30; 

创建一天的计时器。

每次计时器触发时减少days

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

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

NextRunDate = 10/10/2009 4:40 PM

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

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

我强烈建议使用Windows 计划任务function,特别是如果打算在每个月的同一天运行某些function,因为月份在28到31天之间变化。

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

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

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

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

计时器构造函数将采用TimeSpan,这是int64 ticks肯定超过25天?

您是否还认为系统可能不会熬夜30天?

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