2

在ASP.NET MVC中实现简单的定时任务调度有很多方式(注:这里提到的是简单的定时任务调度解决方案,复杂的定时任务调度不在本文的涉及范围),本站之前也给读者朋友们推荐了几款关于.NET WEB应用程序实现定时任务调度的组件,包括:

今天再分享一个基于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>

本文同步发表至码友网 : 基于MemoryCache来实现的ASP.NET Web应用程序简单定时任务调度解决方案


RECTOR
666 声望173 粉丝

计算机科学与技术专业,全栈工程师,码友网创建者、维护者,千星开源项目(DncZeus)项目开发者,专注.NET/.NET Core及相关开发。


引用和评论

0 条评论