void IDisposable.Dispose() { if (Length > 0) { var contents = ToArray(); var entry = Tuple.Create(new FileSpec { Created = SystemClock.UtcNow, Modified = SystemClock.UtcNow, Path = _path, Size = contents.Length }, contents); _memoryStorage.Lock(); try { _memoryStorage._storage[_path] = entry; if (_memoryStorage._storage.Count > _memoryStorage.MaxFiles) { _memoryStorage._storage.Remove(_memoryStorage._storage.OrderByDescending(kvp => kvp.Value.Item1.Created).First().Key); } } finally { _memoryStorage.Unlock(); } } base.Dispose(); }