Ejemplo n.º 1
0
        private byte[] LoadData(int blockIndex)
        {
            ThrowIfDisposed();

            if (m_blocks !.Count <= blockIndex)
            {
                m_blocks.AddRange(new byte[blockIndex - m_blocks.Count + 1][]);
            }

            var blockData = m_blocks[blockIndex];

            if (blockData is null)
            {
                WrappedStream.Position = blockIndex * c_blockSize;
                blockData = new byte[c_blockSize];
                var bytesRead = WrappedStream.ReadBlock(blockData, 0, blockData.Length);
                if (bytesRead != c_blockSize)
                {
                    Array.Resize(ref blockData, bytesRead);
                }
                m_blocks[blockIndex] = blockData;
            }

            return(blockData);
        }