作者:我爱盘小静永远永远 | 来源:互联网 | 2023-10-17 11:28
如何设置定时器在c#中的特定时间执行我有一个要求,我需要在每天00:01:00AM执行计时器…但我没有得到如何实现这一点..如果我正在采取系统时间,它可以是不同的格式.
如何设置定时器在c#中的特定时间执行
我有一个要求,我需要在每天00:01:00 AM执行计时器…但我没有得到如何实现这一点..如果我正在采取系统时间,它可以是不同的格式..这里是我的计时器代码..
static System.Timers.Timer timer; timer = new System.Timers.Timer(); timer.Interval = 1000 * 60 * 60 * 24;//set interval of one day timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); start_timer(); static void timer_Elapsed(object sender, ElapsedEventArgs e) { // Add timer code here } private static void start_timer() { timer.Start(); }
你应该做的是编写你的程序,做你需要做的任何事情,然后使用你的操作系统的内置任务调度程序来启动它。 那是最可靠的。 例如,Windows的任务计划程序可以在用户登录之前启动您的应用程序,在必要时处理重新启动应用程序,记录错误并发送通知等。
否则,您必须每周7天,每天24小时运行您的应用程序,并定期轮询该时间。
例如,您可以每分钟更改一次间隔:
timer.Interval = 1000 * 60;
在您的Elapsed
事件中,检查当前时间:
static void timer_Elapsed(object sender, ElapsedEventArgs e) { if (DateTime.Now.Hour == 1 && DateTime.Now.Minute == 0) { // do whatever } }
但这真的不可靠。 您的应用可能会崩溃。 处理DateTime可能很棘手。
如果你想在00:01:00准时启动一个计时器做一些处理时间,然后重新启动计时器,你只需要计算Now
和下一个00:01:00 am时隙之间的差异,如。
static Timer timer; static void Main(string[] args) { setup_Timer(); } static void setup_Timer() { DateTime nowTime = DateTime.Now; DateTime OneAmTime= new DateTime(nowTime.Year, nowTime.Month, nowTime.Day, 0, 1, 0, 0); if (nowTime > oneAmTime) OneAmTime= oneAmTime.AddDays(1); double tickTime = (oneAmTime - nowTime).TotalMilliseconds; timer = new Timer(tickTime); timer.Elapsed += timer_Elapsed; timer.Start(); } static void timer_Elapsed(object sender, ElapsedEventArgs e) { timer.Stop(); //process code.. setup_Timer(); }
你总是可以计算它:
上述就是C#学习教程:如何设置定时器在c#中的特定时间执行分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—编程笔记
static void timer_Elapsed(object sender, ElapsedEventArgs e) { // Do stuff start_timer(); } private static void start_timer() { timer.Interval = CalculateInterval(); timer.Start(); } private static double CalculateInterval() { // 1 AM the next day return (DateTime.Now.AddDays(1).Date.AddHours(1) - DateTime.Now).TotalMilliseconds; }