public ValueString ReadToEnd()
{
if (_stream == null)
{
throw new InvalidOperationException();
}
//CheckAsyncTaskInProgress();
// Call ReadBuffer, then pull data out of charBuffer.
int?streamLength = null;
try
{
streamLength = (int)(_stream.Length - _stream.Position) + this._byteLen;
}
catch
{
}
if (streamLength != null)
{
mv.EnsureSpace(this._encoding.GetMaxCharCount(streamLength.Value));
}
else
{
mv.EnsureSpace(_charBuffer.Length * 4);
}
var parts = new List <ValueString>();
do
{
var p = mv.CreateValueString(_charBuffer, _charPos, _charLen - _charPos);
parts.Add(p);
_charPos = _charLen; // Note we consumed these characters
ReadBuffer();
} while (_charLen > 0);
return(mv.Concatenate(parts));
}