C# Timer 定时器
2018-02-06 10:58
381 查看
Timer简单介绍
构造函数通过ILSpy反编译可以看到Timer的内部代码。
private static readonly System.Timers.Timer Timer = new System.Timers.Timer(); //初始化。 private static DateTime dtStar = new DateTime(); //时间段--开始时间。 private static DateTime dtEnd = new DateTime(); //时间段--结束时间。 private static int intervalTime = 10;//间隔时间(分钟)。 /// <summary> /// 程序入口(自行调用) /// </summary> /// <param name="timing">定时时间(格式:年月日时分秒)</param> public void Init() { dtStar = DateTime.Now.Date.AddDays(0).AddHours(11);//今天11点。 dtEnd = DateTime.Now.Date.AddDays(0).AddHours(17);//今天17点。 intervalTime = 1;//每1分钟执行一次。 SetInterval(); Timer.Elapsed += new System.Timers.ElapsedEventHandler((s, e) => SetInterval()); } /// <summary> /// 定时器(间断) /// </summary> /// <param name="timing">起始时间</param> private void SetInterval() { Timer.Stop(); var now = DateTime.Now; if (now.Hour >= dtStar.Hour && now.Date == dtStar.Date)//达到开始时间,并且是今天 { if (dtEnd.Subtract(now).TotalMinutes >= intervalTime)//小于结束时间 { print(now);//打印 //---------------------------------------------------------- //此处可修改dtStar,dtEnd,intervalTime,三个参数。更改需求。 //---------------------------------------------------------- Timer.Interval = now.AddMinutes(intervalTime).Subtract(now).TotalMilliseconds; Timer.Start(); } else { //---------------------------------------------------------- //此处可修改dtStar,dtEnd,intervalTime,三个参数。更改需求。 //---------------------------------------------------------- dtStar = DateTime.Now.Date.AddDays(1).AddHours(11);//第二天11点。 dtEnd = DateTime.Now.Date.AddDays(1).AddHours(17);//第二天17点。 intervalTime = 2;//每2分钟执行一次。 Timer.Interval = dtStar.Subtract(now).TotalMilliseconds; Timer.Start(); } } else//如果 定时时间>当前时间 { Timer.Interval = dtStar.Subtract(now).TotalMilliseconds;//重新计算定时时间,按毫秒计算。 Timer.Start(); } } /// <summary> /// 测试输出 /// </summary> public void print(DateTime dt) { num++; Console.WriteLine("执行第{0}次,时间:{1}", num, dt); }
间断时间定时器
相关文章推荐
- C#中自定义高精度Timer定时器的实例教程
- C# System.Timers.Timer定时器的使用和定时自动清理内存应用
- C#中Timer定时器的使用示例
- C#中WebService 的 Timer定时器过段时间后自动停止运行
- c#经典编程实例(六定时器Timer和工具条和父窗体和子窗体的创建)
- C# 使用定时任务 之 谈谈定时器(Timer)的使用
- 关于C#线程中使用定时器timer无效
- c# 使用定时器Timer
- C#创建windows服务搭配定时器Timer使用实例(用代码做,截图版)
- C#中timer定时器用法实例
- c#控件-timer,定时器
- c#定时器Timer
- C# 定时器和队列结合,卖包子啦,Timer、 AutoResetEvent、 ManualResetEvent
- c# 使用timer定时器操作,上次定时到了以后,下次还未执行完怎么处理
- C#创建windows服务搭配定时器Timer使用实例(用代码做,截图版)(从iteye搬到博客园)
- c#四种定时器,wpf DispatcherTimer
- 基于c#中Timer实现定时器功能
- C#中定时器timer的使用
- C# Timer 定时器应用
- 关于C#中Timer定时器的重入问题解决方法(也适用于多线程)