public void Dispose() { if (LeaveCloseStream) { StoreStream.Dispose(); } Lines.CollectionChanged -= OnLinesCollectionChanged; }
protected virtual void Dispose(bool disposing) { if (!disposed && disposing) { StoreStream.Close(); StoreStream.Dispose(); } disposed = true; }
public T Find(IndexBlock indexBlock) { StoreStream.Position = indexBlock.StartPos; int count = (int)(indexBlock.EndPos - indexBlock.StartPos); byte[] buffer = new byte[count]; StoreStream.Read(buffer, 0, count); using (var stream = new MemoryStream(buffer)) { return(Transfer.Deserialize <T>(stream)); } }
public IEnumerable <string> EnumerableLines() { StoreStream.Seek(0, SeekOrigin.Begin); var sr = new StreamReader(StoreStream); string str; while ((str = sr.ReadLine()) != null) { if (!string.IsNullOrEmpty(str)) { yield return(str); } } }
public void Write() { writeLocker.Wait(); try { StoreStream.SetLength(0); var sw = new StreamWriter(StoreStream); foreach (var item in Lines.Skip(SkipCount).Distinct()) { sw.WriteLine(item); } } finally { writeLocker.Release(); } }
public async Task WriteAsync() { await writeLocker.WaitAsync(); try { StoreStream.SetLength(0); var sw = new StreamWriter(StoreStream); foreach (var item in Lines.Skip(SkipCount).Distinct()) { await sw.WriteLineAsync(item); } } finally { writeLocker.Release(); } }
virtual public void Clear() { StoreStream.Close(); File.Delete(StoreStream.Name); StoreStream = new FileStream(StoreStream.Name, FileMode.Create); }
virtual public void Flush() { StoreStream.Flush(); }