예제 #1
0
        public ObjectPool(Type type, int minimumPoolSize, int maximumPoolSize, ObjectPoolFactoryMethod factoryMethod)
        {
            _type            = type;
            _minimumPoolSize = minimumPoolSize;
            _maximumPoolSize = maximumPoolSize;
            _factoryMethod   = factoryMethod;

            _pooledObjects = new Queue <IPooledObject>();
            AdjustMinimumPoolSize();
            AdjustMaximumPoolSize();
        }
예제 #2
0
        /// <summary>
        /// 注册对象池
        /// </summary>
        /// <param name="type"></param>
        /// <param name="minimumPoolSize"></param>
        /// <param name="maximumPoolSize"></param>
        /// <param name="factoryMethod"></param>
        /// <returns></returns>
        public IObjectPool RegisterObjectPool(Type type, int minimumPoolSize, int maximumPoolSize, ObjectPoolFactoryMethod factoryMethod)
        {
            IObjectPool objectPool;

            if (_objectPools.TryGetValue(type, out objectPool))
            {
                App.logManager.Warn("ObjectPoolManager.RegisterObjectPool Warn:" + type.Name + " has already register!");
                return(objectPool);
            }

            objectPool = _objectPools[type] = new ObjectPool(type, minimumPoolSize, maximumPoolSize, factoryMethod);

            return(objectPool);
        }