Ejemplo n.º 1
0
        private void RemoveTile(TileId key)
        {
            TileSource tileSource = this.requests[key];

            if (tileSource != null)
            {
                this.tileCacheSize -= tileSource.Size;
                tileSource.Dispose();
            }

            this.requestList.Remove(key);
            this.requests.Remove(key);
        }
Ejemplo n.º 2
0
        private void UpdateTileChache()
        {
            int tilesCounter;

            lock (this.requestsSyncronizer)
            {
                tilesCounter = this.requestList.Count;
            }

            for (int i = 0;
                 i < MaxRemovedTiles &&
                 tilesCounter > this.MinTileNumber &&
                 this.tileCacheSize > this.MaxTileCacheSize;
                 i++)
            {
                lock (this.requestsSyncronizer)
                {
                    TileId     removed    = this.requestList[0];
                    TileSource tileSource = this.requests[removed];
                    if (tileSource != null && !tileSource.IsUsed)
                    {
                        this.tileCacheSize -= tileSource.Size;
                        tileSource.Dispose();

                        this.requestList.RemoveAt(0);
                        this.requests.Remove(removed);
                    }
                    else
                    {
                        this.requestList.Remove(removed);
                        this.requestList.Add(removed);
                        break;
                    }

                    tilesCounter = this.requestList.Count;
                }
            }
        }