private bool Write(ref byte[] buffer, int length, out int writeLength) { if (buffer.Length < length) { buffer = new byte[length]; } bool isSuccess = true; int offset = 0; while (offset < length) { int result = waveStream.Read(buffer, offset, length - offset); if (result < 0) { if (offset > 0) { Array.Clear(buffer, offset, length - offset); isSuccess = false; break; } else { writeLength = 0; return(false); } } offset += result; } writeLength = offset; WriteBuffer(buffer, length); return(isSuccess); }