0

私のコードは次のようになります:

_req = new HttpRequestMessage(HttpMethod.Get, _uri);
_response = await _httpClient.SendAsync(_req, HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false);

var rawResponse = new byte[_maxContentLength];

using (var responseStream = await _response.Content.ReadAsStreamAsync().ConfigureAwait(false))
{
    int read;
    int offset = 0;

    do
    {
        read = await responseStream.ReadAsync(rawResponse, 0, rawResponse.Length).ConfigureAwait(false);
        html += Encoding.UTF8.GetString(rawResponse, 0, read);
        offset += read;

        if (offset > _maxContentLength)
        {
            return Error("Too big");
        }

    } while (read != 0);
}

「return Error()」は、ストリームとソケットを解放して次の URL を取得するのに十分ですか?

//編集: 一部のページawait responseStream.ReadAsyncでは、ハングして返されません

4

1 に答える 1