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);
            }
        }

  • 相关阅读:
    PHP
    优秀网址
    客户关系管理系统CRM
    面试题
    练习并熟练掌握交互式 SQL 语言
    嵌入式的SQL程序设计
    数据库总结
    JDBC
    玩转Android之Drawable的使用
    Android开发之Activity转场动画
  • 原文地址:https://www.cnblogs.com/SmartLee/p/4709258.html
Copyright © 2011-2022 走看看