惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog
Hugging Face - Blog
Hugging Face - Blog
月光博客
月光博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
博客园 - Franky
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
F
Fortinet All Blogs
H
Help Net Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog
Jina AI
Jina AI
J
Java Code Geeks
Blog — PlanetScale
Blog — PlanetScale
S
SegmentFault 最新的问题
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
美团技术团队
博客园 - 司徒正美
宝玉的分享
宝玉的分享
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Apple Machine Learning Research
Apple Machine Learning Research

博客园 - sonicit

再写Javascript闭包 C# 使用 Newtonsoft.Json 对DataTable转换中文乱码问题的解决 Vue 数据双向绑定的误区 关于JS Pormise的认识 关于jqGrid中GridUnload方法的困惑 Javascript异步编程的4种方法 SQLServer 获得所有表结构(包括表名及字段) ACE代码编辑器,代码提示,添加自定义数据 利用闭包向post回调函数传参数 在seajs中使用require加载静态文件的问题 jqGrid标题行与第一行之间有很大空白的问题解决。 关于bootstrapValidator提交问题的解决 心得(一) 使用心得(一) MSSQL获得表的字段名称及其参数 Controller_Abstract的改造 QeePHP View视图的默认变量与新增变量 Delphi 的内存操作函数(5): 复制内存 Windows 7 安装VS2008 SP1 失败
后台数据缓存的一点心得
sonicit · 2021-12-10 · via 博客园 - sonicit

最近在实际使用中发现,当IIS应用程序池自动回收后,此时访问页面,会提示 “未将对象引用设置到对象的实例”的错误,查看代码发现,使用了类中的静态变量。

public static List<ReportData> = new List<ReportData>();

单看这个问题不大,因为此变量在类中,应用程序池回收后,因为类本身不是static,且不能变为static,所以要加以改造。

使用类单例模式,就可以比较好的解决这一问题。

因为类单例模式,在运行时实例唯一,这是做缓存的根本。

    public class EMPDataInterfaceDataCacheO : EMPDataCacheO
    {
        /// <summary>
        /// 数据接口中缓存类
        /// </summary>
        public class ListData : CacheListData { }
        /// <summary>
        /// 超时时间,3分钟
        /// </summary>
        private const int OverTime = 3;
        /// <summary>
        /// 缓存列表
        /// </summary>
        private List<ListData> cacheList;
        /// <summary>
        /// EMPDataInterfaceDataCache 实例
        /// </summary>
        private static EMPDataInterfaceDataCacheO cache;
        /// <summary>
        /// 获得缓存实例
        /// </summary>
        /// <returns>实例</returns>
        public static EMPDataInterfaceDataCacheO GetInstance()
        {
            if (cache == null)
            {
                cache = new EMPDataInterfaceDataCacheO();
            }
            return cache;
        }

        private EMPDataInterfaceDataCacheO()
        {
            cacheList = new List<ListData>();
        }
    }

以上是部分代码,类中实现了,缓存数据的存取,过期的自动清理等。