/// <summary> /// Initializes a new instance of the <see cref="T:ThrottledStream" /> class. /// </summary> /// <param name="baseStream">The base stream.</param> /// <param name="bandwidthLimit">The maximum bytes per second that can be transferred through the base stream.</param> /// <exception cref="ArgumentNullException">Thrown when <see cref="baseStream" /> is a null reference.</exception> /// <exception cref="ArgumentOutOfRangeException">Thrown when <see cref="BandwidthLimit" /> is a negative value.</exception> public ThrottledStream(Stream baseStream, long bandwidthLimit) { if (bandwidthLimit < 0) { throw new ArgumentOutOfRangeException(nameof(bandwidthLimit), bandwidthLimit, "The maximum number of bytes per second can't be negative."); } _baseStream = baseStream ?? throw new ArgumentNullException(nameof(baseStream)); BandwidthLimit = bandwidthLimit; _bandwidth = new Bandwidth { BandwidthLimit = BandwidthLimit }; }
// ReSharper disable once MemberCanBePrivate.Global public DownloadService() { _bandwidth = new Bandwidth(); Options = new DownloadConfiguration(); Package = new DownloadPackage(); // This property selects the version of the Secure Sockets Layer (SSL) or // existing connections aren't changed. ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; // Accept the request for POST, PUT and PATCH verbs ServicePointManager.Expect100Continue = false; // Note: Any changes to the DefaultConnectionLimit property affect both HTTP 1.0 and HTTP 1.1 connections. // It is not possible to separately alter the connection limit for HTTP 1.0 and HTTP 1.1 protocols. ServicePointManager.DefaultConnectionLimit = 1000; // Set the maximum idle time of a ServicePoint instance to 10 seconds. // After the idle time expires, the ServicePoint object is eligible for // garbage collection and cannot be used by the ServicePointManager object. ServicePointManager.MaxServicePointIdleTime = 10000; }