zoukankan      html  css  js  c++  java
  • 缓存(二)

    public abstract class SessionHandler : IDisposable
        {
            /// <summary>
            /// 缓存更新线程
            /// </summary>
            Thread SessionThread;
    
            /// <summary>
            /// 最后更新时间
            /// </summary>
            public DateTime LastModified { get; protected set; }
    
            /// <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);
            }
        }
    
        public abstract class ListSessionHandler<T> : SessionHandler, IDisposable
                where T : new()
        {
    
            /// <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; }
    
            private bool Disposed;
        }
    
        public abstract class DictionarySessionHandler<T, V> : SessionHandler, IDisposable
        where V : new()
        {
            /// <summary>
            /// 同步锁
            /// </summary>
            protected object Lock = new object();
    
            /// <summary>
            /// 缓存集合
            /// </summary>
            protected Dictionary<T, V> _session;
    
            /// <summary>
            /// 只读集合
            /// </summary>
            public Dictionary<T, V> Session
            {
                get
                {
                    if (_session == null) return null;
                    lock (Lock)
                    {
                        return _session;
                    }
                }
            }
    
            /// <summary>
            /// 数据库数据
            /// </summary>
            public abstract Dictionary<T, V> Database { get; }
    
            private bool Disposed;
        }
  • 相关阅读:
    2019/2/3从字符串中删除指定的字符
    2019/2/3求组合数
    2019/2/3统计各成绩段的学生人数
    2019/2/3摄氏一华氏温度转换表
    2019/1/29有选择的复制字符串
    2019/1/28数字的移动
    2019/1/2810个整数的数据处理
    2019/1/27从三个数中找出最大的数(函数和宏)
    2019/1/23编写函数统计字符串中字母、数字、空格和其它字符的个数
    Jenkins 执行python脚本
  • 原文地址:https://www.cnblogs.com/liyangLife/p/5417421.html
Copyright © 2011-2022 走看看