asp.net定时任务实现(原创)
定时任务一般都是要有个定时器来定时触发任务的,在.net下也有几个选择,如System.Timers.Timer 等,代码示例
Code
然后可以选择在自定义HttpModule的Init方法或者Globals.aspx中的Application_OnStart 中调用定时器。实现也很雅观,不过俺想到了另外一种方法,应该有人用,但是好像还没看到这样用的,呵呵,发出来探讨探讨,呵呵
那就是利用cache的缓存移除通知,到这里你应该想到了吧,首先我们对cache设置一定的过期时间,并为其添加过期的缓存移除回调,那么当到达你设定的时间,缓存过期,自动执行回调的方法,感觉是不是也很清爽呢,最近的工作是在维护一个论坛,那就以论坛为例子,定时检测一些及时数据,如在线人数,新帖信息等。
首先第一次当然是读取数据然后缓存咯,这步跳过,然后放进缓存,这步也跳过,加缓存依赖,这步也。。。当然不能跳过啦,跳过了还怎么定时我的任务呢,呵呵
HttpContext.Current.Cache.Add("TimerReport",
CreateReport(), null, DateTime.MaxValue,
new TimeSpan(0, 1, 0),
System.Web.Caching.CacheItemPriority.Default,
MyCallback);
CreateReport(), null, DateTime.MaxValue,
new TimeSpan(0, 1, 0),
System.Web.Caching.CacheItemPriority.Default,
MyCallback);
关于缓存的实用就查查msdn吧,避免copy msdn的嫌疑!这样,每一分钟后,MyCallback这个方法就会被调用,可以在里面操作发邮件,删除过期信息等,是否觉得很方便呢!就权当奇淫技巧吧,哈哈哈。。。。