Пример #1
0
        /// <summary>
        /// 添加清除缓存数据委托
        /// </summary>
        /// <param name="clearCache"></param>
        /// <returns>false 表示已经添加过,无需重复添加</returns>
        public static bool AddClearCache(Action <int> clearCache)
        {
            ReferenceHashKey <Action <int> > hashKey = new ReferenceHashKey <Action <int> >(clearCache);

            clearCacheLock.EnterSleep();
            try
            {
                return(clearCountCaches.Add(hashKey));
            }
            finally { clearCacheLock.Exit(); }
        }
Пример #2
0
 /// <summary>
 /// 获取成员位图内存池
 /// </summary>
 /// <param name="size">成员位图字节数量</param>
 /// <returns></returns>
 internal static MemberMapPool GetPool(int size)
 {
     if (size > 0)
     {
         int index = size >> 3;
         if (index < pools.Length)
         {
             MemberMapPool pool = pools[index];
             if (pool != null)
             {
                 return(pool);
             }
             poolLock.EnterSleep();
             if ((pool = pools[index]) == null)
             {
                 try
                 {
                     pools[index] = pool = new MemberMapPool(size);
                 }
                 finally { poolLock.Exit(); }
             }
             else
             {
                 poolLock.Exit();
             }
             return(pool);
         }
     }
     return(null);
 }
Пример #3
0
 /// <summary>
 /// 添加待检测类型
 /// </summary>
 /// <param name="type"></param>
 internal static void Add(Type type)
 {
     typeLock.EnterSleep();
     try
     {
         types.Add(type);
     }
     finally { typeLock.Exit(); }
 }
Пример #4
0
        /// <summary>
        /// 加载程序集
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private static void loadAssembly(object sender, AssemblyLoadEventArgs args)
        {
            AssemblyCache assemblyCache = new AssemblyCache(args.LoadedAssembly);

            cacheLock.EnterSleep();
            try
            {
                cache[assemblyCache.fullName] = assemblyCache;
            }
            finally { cacheLock.Exit(); }
        }
Пример #5
0
 /// <summary>
 /// 默认线程静态变量
 /// </summary>
 /// <returns></returns>
 private static ThreadStaticSerializer get()
 {
     createLock.EnterSleep();
     try
     {
         if (value == null)
         {
             value = new ThreadStaticSerializer();
         }
     }
     finally { createLock.Exit(); }
     return(value);
 }