zoukankan      html  css  js  c++  java
  • 缓存

     public abstract class SessionHandler<T> : IDisposable
            where T : new()
        {
            /// <summary>
            /// 缓存更新线程
            /// </summary>
            Thread SessionThread;
    
            /// <summary>
            /// 最后更新时间
            /// </summary>
            public DateTime LastModified { get; protected set; }
    
            /// <summary>
            /// 同步锁
            /// </summary>
            protected object Lock = new object();
    
            /// <summary>
            /// 缓存集合
            /// </summary>
            protected List<T> _session;
    
            /// <summary>
            /// 只读集合
            /// </summary>
            public IQueryable<T> Session
            {
                get
                {
                    if (_session == null) return null;
                    lock (Lock)
                    {
                        return _session.AsQueryable<T>();
                    }
                }
            }
    
            /// <summary>
            /// 数据库数据
            /// </summary>
            public abstract IQueryable<T> Database { get; }
    
            /// <summary>
            /// 加载缓存
            /// </summary>
            protected abstract void LoadSession();
    
            /// <summary>
            /// 线程开始时间
            /// </summary>
            /// <param name="sleep">休眠时间</param>
            protected void StartSessionThread(int sleep)
            {
                SessionThread = new Thread(() =>
                {
                    while (true)
                    {
                        Thread.Sleep(sleep);
                        LoadSession();
                    }
                });
                SessionThread.Start();
            }
    
            /// <summary>
            /// 初始化
            /// </summary>
            public virtual void Init()
            {
                LastModified = DateTime.MaxValue;
                LoadSession();
                StartSessionThread(1800000);
            }
    
            private bool Disposed;
    
            public void Dispose()
            {
                if (SessionThread != null)
                {
                    SessionThread.Abort();
                }
                GC.SuppressFinalize(this);
            }
        }
    

      

  • 相关阅读:
    四则运算实现
    第四周例行报告
    代码规范,结对要求
    第三周例行报告
    第三周作业3功能测试
    第二周例行报告
    第一次作业汇总
    2017/2/24:Maven的pom jar war的区别
    oracle的常用99条语句
    2017/2/21:配置自己的中文乱码拦截器
  • 原文地址:https://www.cnblogs.com/liyangLife/p/5417413.html
Copyright © 2011-2022 走看看