public _MultithreadedCompressor(string inputFileName, string outputFileName, int blockLength) { _inputFileName = inputFileName; _outputFileName = outputFileName; var file = new FileInfo(_inputFileName); _blockLength = blockLength; _countOfBlocks = file.Length / _blockLength + (file.Length % _blockLength == 0 ? 0 : 1); _byteBlockPool = new ObjectPool <byte[]>(new _ByteArrayCreator(_blockLength), null, DEFAULT_BLOCK_POOL_SIZE); _byteBlocksToCompress = new AvoidingLockConcurrentStorage <_OrderedByteBlock>(_countOfBlocks); }