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); }
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; } } }