/// <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(); }
/// <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(); }
/// <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) { }