Пример #1
0
 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));
            }
        }
Пример #4
0
        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);
                }
            }
        }
Пример #5
0
 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();
     }
 }
Пример #6
0
        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();
 }