int TryReadInternal(byte[] data, int size) { CheckDisposed(); int index=0; while (index < size) { int read = stream.Read(data, index, size-index); if (read==0) { return index; } index += read; } return index; }