예제 #1
0
            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();
            }