Exemplo n.º 1
0
        private void DoRefresh(string key, IRefreshCache rc)
        {
            if (rc.IsRefreshing)
            {
                return;
            }
            if (DateTime.Now - rc.LastRefreshTime < rc.Interval)
            {
                return;
            }

            lock (rc.Lock)
            {
                if (rc.IsRefreshing)
                {
                    return;
                }
                rc.IsRefreshing = true;
            }

            //单独刷新
            //若项太多则浪费线程
            //占用默认线程池
            System.Threading.ThreadPool.QueueUserWorkItem(o =>
            {
                try
                {
                    if (!rc.CheckValid())
                    {
                        rc.Refresh();
                        this.log.DebugFormat("刷新缓存“{0}”[{1}]", key, rc);
                    }
                }
                catch (Exception e)
                {
                    this.log.Warn(string.Format("缓存“{0}”[{1}]刷新时发生异常", key, rc), e);
                }
                finally
                {
                    rc.LastRefreshTime = DateTime.Now;
                    rc.IsRefreshing    = false;
                }
            });
        }
        private void DoRefresh(string key, IRefreshCache rc)
        {
            if (rc.IsRefreshing) return;
            if (DateTime.Now - rc.LastRefreshTime < rc.Interval) return;

            lock (rc.Lock)
            {
                if (rc.IsRefreshing) return;
                rc.IsRefreshing = true;
            }

            //单独刷新
            //若项太多则浪费线程
            //占用默认线程池
            System.Threading.ThreadPool.QueueUserWorkItem(o =>
            {
                try
                {
                    if (!rc.CheckValid())
                    {
                        rc.Refresh();
                        this.log.DebugFormat("刷新缓存“{0}”[{1}]", key, rc);
                    }
                }
                catch (Exception e)
                {
                    this.log.Warn(string.Format("缓存“{0}”[{1}]刷新时发生异常", key, rc), e);
                }
                finally
                {
                    rc.LastRefreshTime = DateTime.Now;
                    rc.IsRefreshing = false;
                }
            });
        }