Когда или если утилизировать httpresponsemessage при вызове readasstreamasync?C#

Место общения программистов C#
Anonymous
Когда или если утилизировать httpresponsemessage при вызове readasstreamasync?

Сообщение Anonymous »

Я использую System.net.http.httpclient , чтобы сделать некоторую связь с клиентом HTTP. У меня есть все HTTP в одном месте, абстрагированный от остальной части кода. В одном случае я хочу прочитать содержимое ответа как поток, но потребитель потока хорошо изолирован от того, где происходит связь HTTP, и поток открывается. В этом месте, ответственный за HTTP Communication Я утилизирую все вещи httpclient < /code>.

Код: Выделить всё

[TestMethod]
public async Task DebugStreamedContent()
{
Stream stream = null; // in real life the consumer of the stream is far away
var client = new HttpClient();
client.BaseAddress = new Uri("https://www.google.com/", UriKind.Absolute);

using (var request = new HttpRequestMessage(HttpMethod.Get, "/"))
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
//here I would return the stream to the caller
stream = await response.Content.ReadAsStreamAsync();
}

Assert.IsTrue(stream.CanRead); // FAIL if response is disposed so is the stream
}
Я обычно пытаюсь избавиться от чего -либо истинного в самых ранних удобствах, но в этом случае утилизация httpresponsemessage также утилизирует поток rethageTreamSync . а также поток, или я оставляю ответное сообщение без споры и позволю финализатору справиться с ним. Ни один из вариантов не кажется правильным. < /p>

В этом ответе говорится о том, что не утилизировать httpclient < /code>. Как насчет httprequestmessage и/или httpresponsemessage ?

Я что -то упускаю? Я надеюсь сохранить неосведомленность о поглощающем коде, но оставить все эти недовольные объекты вокруг, идут против года привычки!

Подробнее здесь: https://stackoverflow.com/questions/277 ... treamasync

Вернуться в «C#»