基于MemoryCache来实现的ASP.NET Web应用程序简单定时任务调度解决方案

在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应用程序的简单定时任务调度方案。

如果你觉得对你有帮助,请点个赞以鼓励笔者继续分享,谢谢。

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

你可能感兴趣的:(asp.net,任务调度,定时任务,asp.net-mvc)