C#简单定时缓存类


    public class CacheThread<T> where T : new()
    {
        /// <summary>
        /// 默认2分半钟
        /// </summary>
        private double _defaultTime = 1000 * 30 * 5;
        /// <summary>
        /// 默认启用自动清理数据
        /// </summary>
        private bool _enableDataClean = true;
        /// <summary>
        /// 是否启用数据过期清理(默认清理)
        /// </summary>
        public bool EnableDataClean { get { return _enableDataClean; } set { _enableDataClean = value; } }
        private System.Timers.Timer _timer;
        private T _obj;
        private static object _lockObj = new object();
        public T DictionaryData
        {
            get
            {
                _timer.Interval = _defaultTime;
                if (_obj == null)
                    _obj = new T();
                return _obj;
            }
            set
            {
                lock (_lockObj)
                {
                    if (value == null)
                        _obj = new T();
                    else
                        _obj = value;
                    if (this.EnableDataClean)
                        _timer.Start();
                }
            }
        }
        public CacheThread()
        {
            _obj = new T();
            if (this.EnableDataClean)
            {
                _timer = new System.Timers.Timer(_defaultTime);
                _timer.Elapsed += new System.Timers.ElapsedEventHandler(_timer_Elapsed);
            }
        }

        void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            this.ClearCache();
        }

        public void ClearCache()
        {
            this._obj = default(T);
            System.GC.Collect();
            _timer.Stop();
        }
    }

猜你喜欢

转载自blog.csdn.net/lwbjyl/article/details/83583925