Пример #1
0
        private async Task DownloadChunk(Request downloadRequest, long maximumSpeed, CancellationToken token)
        {
            if (token.IsCancellationRequested ||
                Chunk.IsDownloadCompleted())
            {
                return;
            }

            if (Chunk.IsValidPosition() == false)
            {
                Chunk.Position = 0;
            }

            HttpWebRequest request = downloadRequest.GetRequest();

            request.AddRange(Chunk.Start + Chunk.Position, Chunk.End);
            using HttpWebResponse downloadResponse = request.GetResponse() as HttpWebResponse;
            using Stream responseStream            = downloadResponse?.GetResponseStream();

            if (responseStream != null)
            {
                using ThrottledStream destinationStream = new ThrottledStream(responseStream, maximumSpeed);
                await ReadStream(destinationStream, token);
            }
        }
Пример #2
0
        private async Task DownloadChunk(Request downloadRequest, CancellationToken token)
        {
            token.ThrowIfCancellationRequested();
            if (Chunk.IsDownloadCompleted() == false)
            {
                HttpWebRequest request = downloadRequest.GetRequest();
                SetRequestRange(request);
                using HttpWebResponse downloadResponse = request.GetResponse() as HttpWebResponse;
                using Stream responseStream            = downloadResponse?.GetResponseStream();

                if (responseStream != null)
                {
                    using ThrottledStream destinationStream =
                              new ThrottledStream(responseStream, Configuration.MaximumSpeedPerChunk);
                    await ReadStream(destinationStream, token).ConfigureAwait(false);
                }
            }
        }