/// <summary> /// 获取存在的实例 /// </summary> /// <param name="mLastDateStr"></param> /// <param name="dbName"></param> /// <param name="maxCount"></param> /// <returns></returns> private static T getExistsInstance(string mLastDateStr, string dbName, long maxCount) { T mInstance = new T(); mInstanceListLock.EnterReadLock(); try { string dataKey = YunMapCacheHelper.getInstanceName(mLastDateStr, dbName, maxCount); if (mInstanceList.ContainsKey(dataKey)) { mInstance = mInstanceList[dataKey]; } } catch (Exception ex) { YunLib.LogWriter.Log(ex.ToString()); } mInstanceListLock.ExitReadLock(); return(mInstance); }
/// <summary> /// 获取一个新的实例 /// </summary> /// <returns></returns> private static T getNewInstance(string mLastDateStr, string dbName, long maxCount) { T mInstance = new T(); mInstanceListLock.EnterWriteLock(); try { string dataKey = YunMapCacheHelper.getInstanceName(mLastDateStr, dbName, maxCount); //可能多个写锁触发,先判断 if (mInstanceList.ContainsKey(dataKey)) { mInstance = mInstanceList[dataKey]; } else { mInstance.InitCache(dataKey, maxCount); if (mInstance.IsCacheValid()) { mInstanceList.Add(dataKey, mInstance); } } //清理过期数据缓存 clearOutDateCache(mLastDateStr); } catch (Exception ex) { YunLib.LogWriter.Log(ex.ToString()); } mInstanceListLock.ExitWriteLock(); return(mInstance); }