zoukankan      html  css  js  c++  java
  • 缓存类

     /// <summary>
        /// CachePriceParamSetting类
        /// </summary>
        public class CachePriceParamSetting
        {
            /// <summary>
            /// 缓存参数集合
            /// </summary>
            private static List<MPriceParamSetting> priceParamSettingList = new List<MPriceParamSetting>();

            /// <summary>
            /// 缓存刷新时间
            /// </summary>
            private static int cacheIntervalTime = 5;

            /// <summary>
            /// 缓存时间
            /// </summary>
            private static DateTime cacheTime = DateTime.MinValue;

            /// <summary>
            /// 控制刷新时间time
            /// </summary>
            private static Timer timer = new Timer();

            /// <summary>
            /// timer是否开始
            /// </summary>
            private static bool timerStart = false;

            /// <summary>
            /// 锁
            /// </summary>
            private static object lockObj = new object();

            /// <summary>
            /// 构造函数
            /// </summary>
            public CachePriceParamSetting()
            {
                if (!timerStart)
                {
                    // 首次 先初始化
                    RefreshCache(true);
                    timerStart = true;
                    timer.Interval = cacheIntervalTime * 1000 * 60;
                    timer.Enabled = true;
                    timer.Elapsed += new ElapsedEventHandler(this.Timer_Elapsed);
                }
            }

            /// <summary>
            /// 刷新缓存
            /// </summary>
            /// <param name="mustRefresh">是否强制刷新缓存</param>
            public static void RefreshCache(bool mustRefresh)
            {
                if (null == priceParamSettingList || mustRefresh)
                {
                    try
                    {
                        JavaScriptSerializer serialize = new JavaScriptSerializer();
                        List<MPriceParamSetting> tempList = new List<MPriceParamSetting>();
                        lock (lockObj)
                        {
                            tempList = serialize.Deserialize<List<MPriceParamSetting>>(SupplyPriceBusinessBaseServiceHelper.GetAllPriceParamSettingJSON());
                            if (tempList != null)
                            {
                                priceParamSettingList = tempList;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        if (TrackIdManager.CurrentTrackID != null)
                        {
                            TrackIdManager.CurrentTrackID.ExceptionId = Guid.Empty;
                        }

                        AppException app = new AppException("999999", ex.Message, ex, null);
                        LogManager.Log.WriteException(app);
                    }
                }
            }

            /// <summary>
            /// 获取规则和缓存列表
            /// </summary>
            /// <returns>缓存列表</returns>
            public List<MPriceParamSetting> GetPriceParamSettingListCache()
            {
                return priceParamSettingList;
            }

            /// <summary>
            /// 定时执行 刷新缓存
            /// </summary>
            /// <param name="obj">事件</param>
            /// <param name="e">对象</param>
            private void Timer_Elapsed(object obj, ElapsedEventArgs e)
            {
                RefreshCache(true);
            }
        }

  • 相关阅读:
    OC核心语法之构造方法、Category分类、类的本质、description和SEL
    OC核心语法之NSString、点语法、成员变量作用域、@property和@synthesize
    OC基本语法、类和对象、三大特性
    C语言基础之结构体、枚举、预处理、typedef的使用
    C语言基础之复杂数据类型的学习
    v880 debug
    JQuery的一些简单操作02
    JQuery的一些简单操作01
    学习SVG系列(5):SVG渐变
    学习SVG系列(4):SVG滤镜效果
  • 原文地址:https://www.cnblogs.com/SmartLee/p/4709258.html
Copyright © 2011-2022 走看看