private bool GetNextPageGranulePos(out long granulePos) { var pageCount = _pageOffsets.Count; while (pageCount == _pageOffsets.Count && !HasAllPages) { _reader.Lock(); try { if (!_reader.ReadNextPage()) { HasAllPages = true; continue; } if (pageCount < _pageOffsets.Count) { granulePos = _reader.GranulePosition; return(true); } } finally { _reader.Release(); } } granulePos = 0; return(false); }