C#使用Timer.Interval指定时间间隔与指定时间执行事件

C#中,Timer是一个定时器,它可以按照指定的时间间隔或者指定的时间执行一个事件。

指定时间间隔是指按特定的时间间隔,如每1分钟、每10分钟、每1个小时等执行指定事件;

指定时间是指每小时的第30分、每天10:30:30(每天的10点30分30秒)等执行指定的事件;

在上述两种情况下,都需要使用 Timer.Interval,方法如下:

1、按特定的时间间隔:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Text;
 4 
 5 using System.Timers;
 6 
 7 
 8 namespace TimerExample
 9 {
10     class Program
11     {
12         static void Main(string[] args)
13         {
14             System.Timers.Timer timer = new System.Timers.Timer();
15             timer.Enabled = true;
16             timer.Interval = 60000; //执行间隔时间,单位为毫秒;
17             timer.Start();
18             timer.Elapsed+= new System.Timers.ElapsedEventHandler(test);
19 
20             Console.ReadKey();
21 
22         }
23 
24         private static void test(object source,ElapsedEventArgs e)
25         {
26             Console.WriteLine("OK, test event is fired at: "+DateTime.Now.ToString());
27         }
28     }
29 }

上述代码,timer.Inverval的时间单位为毫秒,60000为1分钟,所以,上代码是每隔1分钟执行一次事件test。注意这里是Console应用程序,所以在主程序Main中,需要有Console.Readkey()保持Console窗口不关闭,否则,该程序执行后一闪就关闭,不会等1分钟的时间。

2、在指定的时刻运行:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Text;
 4 using System.Timers;
 5 
 6 
 7 namespace TimerExample1
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             System.Timers.Timer timer = new System.Timers.Timer();
14             timer.Enabled = true;
15             timer.Interval = 60000; //执行间隔时间,单位为毫秒;
16             timer.Start();
17             timer.Elapsed += new System.Timers.ElapsedEventHandler(test);
18 
19             Console.ReadKey();
20         }
21 
22         private static void test(object source,ElapsedEventArgs e)
23         {
24             if (DateTime.Now.Hour == 12 && DateTime.Now.Minute == 5)    //如果当前时间是12点05分
25                 Console.WriteLine("OK, event fired at: "+DateTime.Now.ToString());
26         }
27 
28     }
29 }

上述代码,是在指定的每天12:05分执行事件。这里需要注意的是,由于是指定到特定分钟执行事件,因此,timer.Inverval的时间间隔最长不得超过1分钟,否则,长于1分钟的时间间隔有可能会错过12:05分这个时间节点,从而导致无法触发该事件。

参考链接:https://www.cnblogs.com/wusir/p/3636149.html

posted @ 2019-02-19 21:44  Oysterlxk  阅读(1642)  评论(0编辑  收藏  举报