首页 / ASP.NET MVC / 正文

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

5438 发布于: 2017-07-26 读完约需4分钟

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

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

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: [C#/.NET]根据枚举值读取枚举对应的描述信息的静态泛型扩展方法

下一篇: SQL SERVER 2005+ 使用VALUES子句实现一条语句查询一行记录中的最大值

本文永久链接码友网 » 基于MemoryCache来实现的ASP.NET Web应用程序简单定时任务调度解决方案

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册