Exemplo n.º 1
0
        public Pool(CreateObject createObject, EnableObject enableObject, DisableObject disableObject)
        {
            _availableObjects = new List <T>();

            _createObject  = createObject;
            _enableObject  = enableObject;
            _disableObject = disableObject;
        }
Exemplo n.º 2
0
    public void ReleaseAll()
    {
        CleanNulls();

        int poolItemsCount = PoolItems.Count;

        for (var index = 0; index < poolItemsCount; index++)
        {
            PoolItems[index] = new Tuple <T, bool>(PoolItems[index].Item1, false);
            DisableObject?.Invoke(PoolItems[index].Item1);
        }
    }
Exemplo n.º 3
0
    public bool ReleaseObject([NotNull] T obj)
    {
        if (obj == null)
        {
            throw new ArgumentNullException(nameof(obj));
        }

        CleanNulls();

        int poolItemsCount = PoolItems.Count;

        for (var index = 0; index < poolItemsCount; index++)
        {
            T item1 = PoolItems[index].Item1;
            if (EqualityComparer <T> .Default.Equals(obj, item1))
            {
                DisableObject?.Invoke(item1);
                PoolItems[index] = new Tuple <T, bool>(item1, false);
                return(true);
            }
        }

        return(false);
    }