public MemoryStreamEx MoveStream(int index) { MemoryStreamEx oldStream = (MemoryStreamEx)m_streamList[m_nActivedStreamPosition]; if (index > 0) { if (index < oldStream.Length) { m_nActivedStreamPosition = (m_nActivedStreamPosition + 1) % m_nMaxStreamCount; MemoryStreamEx newStream = (MemoryStreamEx)m_streamList[m_nActivedStreamPosition]; newStream.Clear(); newStream.Write(oldStream.GetBuffer(), (int)index, (int)(oldStream.Length - index)); oldStream.Clear(); return(newStream); } else { oldStream.Clear(); } } return(oldStream); }