随笔分类 - Scheduled Timer
[Scheduled Timer]第八回:总结
摘要:1.目录[Scheduled Timer]第一回:Scheduled Timer介绍[Scheduled Timer]第二回:时间调度[Scheduled Timer]第三回:事件存储(EventStorage)[Scheduled Timer]第四回:事件过滤(EventFilter)[Scheduled Timer]第五回:任务方法(MethodCall)[Scheduled Timer]第六回:定时器作业(TimerJob)[Scheduled Timer]第七回:ScheduleTimer2.类图部分类图如下,不是全部,点击每个图片上的类图名称可以跳转到相关的介绍。 ...
阅读全文
[Scheduled Timer]第七回:ScheduleTimer
摘要:1.引言Scheduled Timer将定时器Timer进行封装成ScheduledTimer,很多Timer暴露的成员,都以私有化,并将上一节中的定时器作业(TimerJob)进行了集成。2.ScheduledTimer代码很简单,直接上代码 public class ScheduleTimer { public IEventStorage EventStorage = new LocalEventStorage(); public event ExceptionEventHandler Error; private static Tim...
阅读全文
[Scheduled Timer]第六回:定时器作业(TimerJob)
摘要:1.引言实际应用中,我们是定义一个作业,定时器然后定时去调用。前面章节都介绍的时间调度、事件过滤(EventFilter)、任务方法(MethodCall) 这些都是这个作业零部件,这就是这节要介绍的Job。2.JobScheduled Timer的Job是由时间调度器、任务方法,事件过滤器等组成,共同来达到预期的目的,单个不行,好像一个团队,主要代码如下 /// <summary> /// 定时器作业 /// </summary> public class TimerJob { public IScheduledItem Schedule; ...
阅读全文
[Scheduled Timer]第五回:任务方法(MethodCall)
摘要:1.引言Scheduled Timer的由Timer定时器触发执行任务,Timer每隔一段时间(短时间)触发Elapsed事件,大多数做法是给定时器Timer的Elapsed事件赋值,Scheduled Timer的做法差不多,但又有不同。Scheduled Timer做法是把定时器的Elapsed私有化了,给了它一个固定私有的方法Timer_Elapsed,在Timer_Elapsed里有多个Job,每个Job才是对应我们的任务方法。里我们并不是在调用时给Elapsed赋值,Elapsed事件只是一个入口,在Elapsed事件里进行执行我们的任务方法,这个任务方法可以是一个,也可以是集合,这
阅读全文
[Scheduled Timer]第四回:事件过滤(EventFilter)
摘要:1.引言上节介绍了事件持久化,就是事件恢复执行,有时候Timer启动时,时间已经过了很久了,这样的话,事件恢复执行,可能会出现很多,但并不希望它们都出执行,而是有选择性的执行,这就是这节介绍的过滤器EventFilter。2.EventFilterScheduled Timer提供了一个过滤器接口,先来看看接口声明 public interface IResultFilter { void FilterResultsInInterval(DateTime start, DateTime end, List<DateTime> list); }很简单,一个方法,提...
阅读全文
[Scheduled Timer]第三回:事件存储(EventStorage)
摘要:1.引言上一节介绍了调度时间,不清楚的可以参考[Scheduled Timer]第二回,里面谈到了一个,定时器Timer阻塞,而导致定时器延时;或者是网站关停了几个小时,导致本该定时执行的活动没有执行,这都引出一个问题,就是上次执行的时间要记录下来,保存到数据库或者文件里,否则恢复不了,这就引出了EventStorage。2.EventStorageEventStorage是事件持久化,就是把Timer上次执行的时间保存下来,以便能够恢复执行,也就是可以用上节中讲到的IScheduledItem的AddEventsInInterval方法进行恢复。Scheduled Timer提供了一个IEv
阅读全文
[Scheduled Timer]第二回:时间调度
摘要:1.引言上一节里简单介绍了Scheduled Timer,也有园友推荐quartz.net,非常感谢他们,这个星期一直在看Scheduled Timer,就继续做笔记记录下来。将System.Timers.Timer运行间隔Interval设置时间越短,越精确。这也就是说,Timer计时器将会以间隔很短的时间一直在运行,每次运行都将触发Elapsed事件,但是每次Elapsed事件触发,并不是要触发我们的作业工作。ScheduledTime是时间调度,它将引领事件里添加的任务按需执行,接下来介绍Scheduled Timer的时间调度。2.IScheduledItem触发Elapsed事件时,
阅读全文
[Scheduled Timer]第一回:Scheduled Timer介绍
摘要:1.引言进行软件开发时,有没有这样的需求,每周都要发短信给客户;每天晚上12:00准时生成报表;每天 8:00到10:00 之间进行http请求抓数据包;每隔2分钟调用接口API进行同步数据等等。这些需求有一个共同的点,就是在正确的时间去做一件正确的事,这就是Scheduled Timer要干的。Scheduled Timer 是一个定时器调度,是一个对.net的Timer包装块。2.定时器介绍之前看到我的上级写了个定时作业,利用Thread睡眠1秒钟来循环来计时,感觉挺麻烦的。Scheduled Timer则是使用System.Timers.Timer。Scheduled Timer是一个朋
阅读全文