在ASP.NET MVC中实现简单的定时任务调度有很多方式(注:这里提到的是简单的定时任务调度解决方案,复杂的定时任务调度不在本文的涉及范围),本站之前也给读者朋友们推荐了几款关于.NET WEB应用程序实现定时任务调度的组件,包括:
- Quartz.Net: 基于ASP.NET MVC C#和Quartz.Net组件实现的定时执行任务调度
- FluentScheduler系列之一: 推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件--FluentScheduler
- FluentScheduler系列之二: 简单、轻量、功能非常强大的C#/ASP.NET定时调度任务执行管理组件--FluentScheduler之实例篇
今天再分享一个基于MemoryCache来实现的ASP.NET Web应用程序定时任务调度解决方案,即用MemoryCache的CacheItemRemovedCallback回调方法来实现。
先看一下核心代码:
private static CacheItemRemovedCallback OnCacheRemove = null;
protected void Application_Start(object sender, EventArgs e)
{
AddTask("DoStuff", 60);
}
private void AddTask(string name, int seconds)
{
OnCacheRemove = new CacheItemRemovedCallback(CacheItemRemoved);
HttpRuntime.Cache.Insert(name, seconds, null,
DateTime.Now.AddSeconds(seconds), Cache.NoSlidingExpiration,
CacheItemPriority.NotRemovable, OnCacheRemove);
}
public void CacheItemRemoved(string k, object v, CacheItemRemovedReason r)
{
// do stuff here if it matches our taskname, like WebRequest
// re-add our task so it recurs
AddTask(k, Convert.ToInt32(v));
}
以上代码的实现逻辑比较简单,即在ASP.NET WEB应用程序的Appliation_Start方法中添加一个MemoryCache项,同时设置这个项的回调方法,每当MemoryCache过期时,再重复调用定时任务的方法即达到执行定时任务的目的。
好了,本文主要分享另外一种基于ASP.NET WEB应用程序的简单定时任务调度方案。
<span style="color:red">如果你觉得对你有帮助,请点个赞以鼓励笔者继续分享,谢谢。</span>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。