Greatly reduces the amount of memory usage when streaming from the server by: 1. Shedding use of an internal MemoryStream 2. Using HttpCompletionOption.ResponseHeadersRead to start reading the stream without loading all of the HttpContent into memory
14 lines
No EOL
591 B
C#
14 lines
No EOL
591 B
C#
using System.Net.Http;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace LANCommander.SDK.Extensions;
|
|
|
|
internal static class HttpContentExtensions
|
|
{
|
|
internal static async Task<TrackableStream> ReadAsTrackableStreamAsync(this HttpContent content)
|
|
=> await content.ReadAsTrackableStreamAsync(CancellationToken.None);
|
|
|
|
internal static async Task<TrackableStream> ReadAsTrackableStreamAsync(this HttpContent content, CancellationToken ct)
|
|
=> new TrackableStream(await content.ReadAsStreamAsync(ct), content.Headers.ContentLength.GetValueOrDefault());
|
|
} |