定时器的最大时间间隔为2,147,483,647。大约25天。但在我的要求中,我需要计时器将等待30天。我该如何解决它?请帮忙。最大定时器时间间隔
回答
为此使用System.Threading.Timer
。有long
,uint
或TimeSpan
而不是int
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();
}
现在你只需要保持你的系统健康和快乐30天。 – 2009-10-26 13:58:02
@亨克:这个问题没有提及*为什么*计时器的时间需要30天。对于我们所知道的,这个计时器可能会被用来发送电子邮件给某人说:“嘿,这台服务器连续运行了30天”。 – MusiGenesis 2009-10-26 14:00:16
30天,是的。但最大值约为49天,因为即使使用int64或TimeSpan版本,它也不会接受超过2 * 32-2毫秒的值。 – RenniePet 2011-06-13 00:11:00
您可以随时让计时器等待较短的时间,如一天,计时器每次触发计数器并检查计数器的当前值。如果值为30,则执行应该每30天运行一次的代码。
更好的办法是将值设置在某个外部文件的某个位置,以便如果程序意外退出,则可以恢复您离开的位置。理想情况下,您可能希望将下一个运行日期放在文件中,以便如果程序关闭多天,则可以恢复并在正确的日期触发它,而不必担心上次运行的时间。因此,像
NextRunDate = 2009/10/10 4:40 PM
当程序运行时它会设置提前的日期还有30天。
将日期时间变量设置为日期时间,当您想要执行任何它时...然后,只需让计时器检查每分钟(或任何您需要的准确度级别)以查看该日期时间是否已过去。 。
要做到这一点有一个计时器,你还需要一个应用程序,并且没有中断30+天运行的PC。并非不可能,但是风险很大。
这听起来像你想要的东西安排执行。计算目标日期/时间并将其保存为XML或.config文件。当应用程序重新启动时,它可以重新计算用于触发事件的TimeSpan。
这是计时器,告诉你你的应用程序更适合作为计划任务来实现。
计时器的构造函数将采用一个TimeSpan,它是int64肯定会超过25天?
您是否也考虑过系统可能无法保持30天?
只看了一眼,就是10,675,199天。
我强烈建议使用Windows Scheduled Task功能,尤其是如果这是为了在每个月的同一天运行某些功能,因为月份会在28到31天之间变化。
这不是问题的答案。如果您在给定时间(计划程序)启动应用程序,或者正在运行的应用程序在给定时间(计时器)正在执行某些操作,则这是完全不同的。 – 2012-03-28 10:12:44
Quartz.NET库是定期运行代码的另一种选择。
- 1. 定时器得到间隔时间
- 2. 定时器间隔警报
- 3. Highcharts:设置固定时间间隔的最大滴答数
- 4. 多间隔时间设定
- 5. 在一定时间间隔
- 6. 指定SSRS时间间隔
- 7. 自定义时间间隔
- 8. C#定时器间隔每24小时
- 9. 时间间隔
- 10. 更改计时器的时间间隔
- 11. 计算最佳计时器间隔(timer_settime)
- 12. 如果最大时间戳大于其他最大时间戳
- 13. NSDateComponentsFormatter不支持大时间间隔
- 14. SQL - 最快的时间间隔查询
- 15. 所有时间间隔的最大重叠数
- 16. 找到最大重叠间隔数的时间段
- 17. 查找最大并发进程数的时间间隔
- 18. LINQ查询获得最大时间间隔
- 19. 查找日期列表中最大的时间间隔
- 20. JPQL时间间隔
- 21. 的时间间隔
- 22. 时间戳间隔
- 23. NAN时间间隔
- 24. Fullcalendar时间间隔
- 25. 日期时间计时器时间间隔不会改变加
- 26. 在VB中设置随机定时器时间间隔
- 27. C#中不同时间间隔的多个定时器.net
- 28. 定时器有两个执行任务的时间间隔
- 29. 不同的定时器精度不同的时间间隔
- 30. 等待定时器,运行每个时间间隔?
哪个定时器? .NET中至少有3个不同的计时器! – 2009-10-26 13:29:15
System.Threading; – Wilson 2009-10-26 13:32:04
这不是一个错误的方式。一个错误是当你的代码和你的规范不一致时。我想你会发现这是一个有据可查的限制。 – paxdiablo 2009-10-26 13:33:25