protected Stream OpenDataFileStream(out FileStream lockFile) { Stream dataFile; if (!LockUtil.TryAquireWriteLock(_directory, out lockFile)) { var dataFileName = Path.Combine(_directory, _version + ".rdb"); dataFile = new FileStream( dataFileName, FileMode.CreateNew, FileAccess.Write, FileShare.ReadWrite, 4096 ); } else { var ixFileName = LockUtil.GetFirstIndexFileNameInChronologicalOrder(_directory); long dataFileVersion = ixFileName == null ? _version.Version : long.Parse(Path.GetFileNameWithoutExtension(ixFileName)); var dataFileName = Path.Combine(_directory, dataFileVersion + ".rdb"); dataFile = new FileStream( dataFileName, FileMode.Append, FileAccess.Write, FileShare.ReadWrite, 4096 ); } return(dataFile); }