private void _generateElement() { CBufferBlock block; int nOffset = -SizeOfBlock; //첫 블록을 반복문 시작 때 가르키기 위해 -1블록 위치를 지정 for (int i = 0; i < Capacity; i++) { nOffset += SizeOfBlock; //다음블록으로 offset이동 block = new CBufferBlock(m_arrPool, nOffset, SizeOfBlock); m_stackServiceableObjectPool.Push(block); m_arrCBufferBlockHash[i] = block.GetHashCode(); } }
public void push(CBufferBlock block) { if (block == null) { throw new ArgumentNullException("Block object is null"); } int?resFind = Array.Find(m_arrCBufferBlockHash, x => x == block.GetHashCode()); if (resFind != null) { m_stackServiceableObjectPool.Push(block); } else { throw new ArgumentException("해당 객체 풀에서 생성된 객체가 아닙니다."); } }