时间:2022-11-10 09:23:13 | 栏目:.NET代码 | 点击:次
定时器就是经过固定时间,执行固定任务。
初始化定时器间隔多少时间执行
System.Timers.Timer timer = new System.Timers.Timer(double interval);
interval是毫秒数。比如最后的毫秒数设为1000就是一秒。
也可以用无参构造函数创建后,用对象.interval设置。
设置执行的事件–Elapsed
timer.Elapsed += 需要方法名称。
经过上面设置好的毫秒后,执行事件。比如我要在指定时间内执行方法MyMethod,使用该参数Elapsed进行指定。timer.Elapsed += MyMethod。
该方法有且仅有两个参数MyMethod(Object source, ElapsedEventArgs e)
,且返回值为void。 其中的ElapsedEventArgs 是给Elapsed事件提供数据的对象。
当然了,你还可以再MyMethod中调用其他的方法。
设置是否重复执行–AutoReset
该参数的值类型为bool,默认为false。
如果为false,该定时器只会在第一次经过指定时间执行一次Elapsed方法,后续再经过指定时间间隔就不再执行。
如果为true则每经过时间间隔就执行一次该方法。
设置是否触发Elapsed事件–Enabled
该参数的值类型为bool,默认为false。
如果为false,就算经过指定事件也不触发Elapsed事件。
若为true,经过指定时间,执行Elapsed事件。
using System; using System.Timers; public class TimerTest { //定义定时器 private static System.Timers.Timer aTimer; public static void Main() { //初始化定时器属性 SetTimer(); Console.WriteLine("\n键盘输入即可退出...\n"); Console.WriteLine("定时器开始于 {0:HH:mm:ss.fff}", DateTime.Now); Console.ReadLine();//保持程序持续运行 aTimer.Stop();//停止定时器 Console.WriteLine("\n停止定时器...\n"); aTimer.Dispose();//释放资源 Console.WriteLine("退出..."); Console.ReadLine(); } private static void SetTimer() { Console.WriteLine("初始化当前的定时器"); // 创建一个两秒一次的定时器 aTimer = new System.Timers.Timer(2000); // 设置事件 aTimer.Elapsed += MyMethod; aTimer.AutoReset = true; aTimer.Enabled = true; Console.WriteLine("设置完毕"); } public static void A() { //在这里写真正的操作 Console.WriteLine("我定时执行的操作A"); } private static void MyMethod(Object source , ElapsedEventArgs e) { //我真正需要执行的操作 Console.WriteLine("当前时间 {0:HH:mm:ss.fff}", DateTime.Now); Console.WriteLine("ElapsedEventArgs携带的数据 {0:HH:mm:ss.fff}", e.SignalTime); A(); } }
结果