HttpRuntime自定义定时更新缓存

缓存更新类如下:

    /// <summary>
    /// 缓存更新类
    /// </summary>
    /// <typeparam name="T">缓存对象</typeparam>
    public class UpdateCacheHelper<T>
    {
        /// <summary>
        /// 计时器
        /// </summary>
        private System.Threading.Timer timer;

        /// <summary>
        /// 缓存时间(分钟)
        /// </summary>
        private int saveTime;

        /// <summary>
        /// 默认(毫秒)
        /// </summary>
        private int intervalTime = 10 * 1000;

        /// <summary>
        /// 缓存键
        /// </summary>
        private string cacheKey = string.Empty;

        /// <summary>
        /// 代理
        /// </summary>
        private Delegate dele;

        /// <summary>
        /// 代理的入参
        /// </summary>
        private object[] objs;

        /// <summary>
        /// 更新缓存类
        /// </summary>
        /// <param name="dele">代理</param>
        /// <param name="cacheKey">key</param>
        /// <param name="saveTime">缓存时间(分钟)</param>
        /// <param name="intervalTime">间隔时间(秒)</param>
        /// <param name="objs">入参</param>
        public UpdateCacheHelper(Delegate dele, string cacheKey, int saveTime, int intervalTime, params object[] objs)
        {
            this.dele = dele;
            this.cacheKey = cacheKey;
            this.saveTime = saveTime;
            this.intervalTime = intervalTime * 1000;
            this.objs = objs;
            this.timer = new System.Threading.Timer(new System.Threading.TimerCallback(this.CheckDependencyCallBack), this, 0, this.intervalTime);
        }

        /// <summary>
        /// 从数据库获取数据
        /// </summary>
        /// <returns>数据</returns>
        public T GetData()
        {
            string assemblyName = this.dele.Target.GetType().Assembly.FullName;
            string typeName = this.dele.Target.GetType().FullName;

            object instance = Assembly.Load(assemblyName).CreateInstance(typeName);

            MethodInfo methodInfo = this.dele.Method;

            return (T)methodInfo.Invoke(instance, this.objs);
        }

        /// <summary>
        /// 回调函数
        /// </summary>
        /// <param name="sender">sender</param>
        private void CheckDependencyCallBack(object sender)
        {
            T newData = this.GetData();
            HttpRuntime.Cache.Insert(this.cacheKey, newData, null, Cache.NoAbsoluteExpiration, new TimeSpan(0, this.saveTime, 0), CacheItemPriority.NotRemovable, null);
        }
    }
时间: 2024-08-08 11:10:35

HttpRuntime自定义定时更新缓存的相关文章

php原生态生成静态缓存页,定时更新

public function insertAction() { ini_set('max_execution_time', '0'); // error_reporting(E_ALL); // ini_set('display_errors', 'Off'); // 插入之前首先更新目录文件 $getHomeList = $this->getXmlAction(); $arr_code = array( 1 => '插入成功', -1 => '插入失败!请检查再试!', -2 =&g

iOS 属性修饰符记录 --不定时更新

重新审视了一下OC在属性修饰符,特意记录一下来.以后不定时更新 > retain:只有在非ARC下才会有效,所有如果在ARC下使用了retain修饰也白搭 如以下的data属性用retain修饰: #import <UIKit/UIKit.h> @interface MyView : UIView @property(nonatomic, retain) NSMUtableArray* data; @end 在对应的setter方法中,会以如下代码实现: if (_data != new

Android学习笔记(不定时更新)

在很久之前,我就想写写博客,不过本人比较懒,这几天心血来潮,决定开写博客,因为学习,实习,面试关系,不会定时更新,以下是我所学的知识,总结分享一下,如有不正确,希望各位轻喷. QQ:545662362.欢迎交流,因为第一次写博客,格式什么的也不是特别好.好了,学习目录如下 1.Android 开发环境搭建 2.Android 应用程序 3.Android 常用基本控件 4.Android 常用高级控件 5.Android 消息与广播 6.Service 后台服务 7.Android 数据存储与服

即日起,博客将不定时更新技术内容

Hello,everybody!这是我新开的博客,以后我会将我收藏的资源以及修改之后的资源发布到这里,希望对大家有所帮助. 同时,本人的个人贴吧也开通了,欢迎有志之士加入我这个大家庭,帮助更多开发者,共同学习,共同进步. 贴吧链接 吕昌辉吧 即日起,博客将不定时更新技术内容,布布扣,bubuko.com

chrome浏览器更换favicon.ico后不更新缓存解决方案

chrome浏览器更换favicon.ico后不更新缓存 1.按ctrl+F5强制刷新或网页上右键重新载入.2.再不行就删除缓存.3.但这样太讨厌了,还有个小窍门屡试不爽,那就是直接在浏览器地址栏访问favicon文件.4.如果访问还是原先的ico文件,在浏览图片时刷新一下,再回到网站看一下,已经解决了,毕竟谁都不愿意为这个问题去清缓存和cookies什么的.

apue第四章习题的一些拙见(不定时更新)

写在前面:最近要期末考试,看来真的是要不定时更新啦XD apue4.1: 由于在这里lstat是不跟随符号文件的,而stat是跟随符号文件的,这样一来,如果使用stat,而不使用lstat那么就无法观察到符号文件.在书上4.3姐中有提到. apue4.2: 首先我在ubuntu的shell上查看原来的umask是多少,结果是0002,这里touch一个文件是不确定的,但是其他者的权限中写的权限一定是没有的.因为创建一个文件所拥有的权限不光与umask有关还与应用程序自身在创建的时候使用的参数有关

linux下svn定时更新项目

方法一.用shell脚本定时更新项目 1.进入网站的根目录,假设项目位置放在/var/www/test cd /var/www/test 2.建立脚本文件update.sh,分两步进行.首先利用touch命令创建,之后使用vim进行编辑. touch update.sh vim update.sh 输入以下内容 #!/bin/sh while true do svn update --username 你的svn用户名 --password 你的svn密码 sleep 60 done 这里我设置

[Android Traffic] 调整定时更新的频率(C2DM与退避算法)

转载自: http://blog.csdn.net/kesenhoo/article/details/7395253 Minimizing the Effect of Regular Updates[最小化定时更新操作的副作用] 最佳的定时更新频率是不确定的,通常由设备状态,网络连接状态,用户行为与用户定义明确的偏好而决定. Optimizing Battery Life([Android Training - 04]优化电池寿命)这一章有讨论如何根据设备状态来修改更新频率.里面介绍了当断开网络

KindEditor问题汇总【不定时更新】

问题一:KindEditor放在隐藏的元素里面,当用jq控制其显示时KindEditor编辑器显示不出来. 解决方法:在textarea 加个宽 就OK了<textarea id="Contents1" name="Contents1" rows="5" cols="30" style="width:500px"></textarea> 相关链接1:http://kindeditor