Exemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="IntelliPoolBase{T}"/> class.
        /// </summary>
        /// <param name="initialCount">The initial count.</param>
        /// <param name="itemCreator">The item creator.</param>
        /// <param name="itemCleaner">The item cleaner.</param>
        /// <param name="itemPreGet">The item pre get.</param>
        public IntelliPoolBase(int initialCount, IPoolItemCreator <T> itemCreator, Action <T> itemCleaner = null, Action <T> itemPreGet = null)
        {
            _itemCreator = itemCreator;
            _itemCleaner = itemCleaner;
            _itemPreGet  = itemPreGet;

            var list = new List <T>(initialCount);

            foreach (var item in itemCreator.Create(initialCount))
            {
                RegisterNewItem(item);
                list.Add(item);
            }

            _store = new ConcurrentStack <T>(list);

            _totalCount     = initialCount;
            _availableCount = _totalCount;
            UpdateNextExpandThreshold();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="IntelliPoolBase{T}"/> class.
        /// </summary>
        /// <param name="initialCount">The initial count.</param>
        /// <param name="itemCreator">The item creator.</param>
        /// <param name="itemCleaner">The item cleaner.</param>
        /// <param name="itemPreGet">The item pre get.</param>
        public IntelliPoolBase(int initialCount, IPoolItemCreator <T> itemCreator, Action <T> itemCleaner = null, Action <T> itemPreGet = null)
        {
            m_ItemCreator = itemCreator;
            m_ItemCleaner = itemCleaner;
            m_ItemPreGet  = itemPreGet;

            Log = AppContext.CurrentServer.Logger;

            var list = new List <T>(initialCount);

            foreach (var item in itemCreator.Create(initialCount))
            {
                RegisterNewItem(item);
                list.Add(item);
            }

            m_Store = new ConcurrentStack <T>(list);

            m_TotalCount     = initialCount;
            m_AvailableCount = m_TotalCount;
            UpdateNextExpandThreshold();
        }
Exemplo n.º 3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="IntelliPool{T}"/> class.
 /// </summary>
 /// <param name="initialCount">The initial count.</param>
 /// <param name="itemCreator">The item creator.</param>
 /// <param name="itemCleaner">The item cleaner.</param>
 /// <param name="itemPreGet">The item pre get.</param>
 public IntelliPool(int initialCount, IPoolItemCreator <T> itemCreator, Action <T> itemCleaner = null, Action <T> itemPreGet = null)
     : base(initialCount, itemCreator, itemCleaner, itemPreGet)
 {
 }