pull/2295/head
2dust 2022-04-25 19:07:09 +08:00
parent 6259539c87
commit 3be93df63f
2 changed files with 10 additions and 19 deletions

View File

@ -162,7 +162,7 @@ namespace v2rayN.Base
} }
} }
public async Task DownloadDataAsync4Speed(HttpClient client, string url, IProgress<double> progress, CancellationToken token) public async Task DownloadDataAsync4Speed(HttpClient client, string url, IProgress<string> progress, CancellationToken token)
{ {
if (string.IsNullOrEmpty(url)) if (string.IsNullOrEmpty(url))
{ {
@ -176,15 +176,15 @@ namespace v2rayN.Base
throw new Exception(string.Format("The request returned with HTTP status code {0}", response.StatusCode)); throw new Exception(string.Format("The request returned with HTTP status code {0}", response.StatusCode));
} }
var total = response.Content.Headers.ContentLength.HasValue ? response.Content.Headers.ContentLength.Value : -1L; //var total = response.Content.Headers.ContentLength.HasValue ? response.Content.Headers.ContentLength.Value : -1L;
var canReportProgress = total != -1 && progress != null; //var canReportProgress = total != -1 && progress != null;
using (var stream = await response.Content.ReadAsStreamAsync()) using (var stream = await response.Content.ReadAsStreamAsync())
{ {
var totalRead = 0L; var totalRead = 0L;
var buffer = new byte[1024 * 64]; var buffer = new byte[1024 * 64];
var isMoreToRead = true; var isMoreToRead = true;
var progressPercentage = 0; string progressSpeed = string.Empty;
DateTime totalDatetime = DateTime.Now; DateTime totalDatetime = DateTime.Now;
do do
@ -216,21 +216,12 @@ namespace v2rayN.Base
totalRead += read; totalRead += read;
TimeSpan ts = (DateTime.Now - totalDatetime); TimeSpan ts = (DateTime.Now - totalDatetime);
var speed = totalRead * 1d / ts.TotalMilliseconds / 1000; var speed = (totalRead * 1d / ts.TotalMilliseconds / 1000).ToString("#0.0");
if (canReportProgress) if (progress != null)
{ {
var percent = Convert.ToInt32((totalRead * 1d) / (total * 1d) * 100); if (progressSpeed != speed)
if (progressPercentage != percent)
{ {
progressPercentage = percent; progressSpeed = speed;
progress.Report(speed);
}
}
else if (progress != null)
{
if (progressPercentage != Convert.ToInt32(speed * 10))
{
progressPercentage = Convert.ToInt32(speed * 10);
progress.Report(speed); progress.Report(speed);
} }
} }

View File

@ -46,12 +46,12 @@ namespace v2rayN.Handler
Proxy = webProxy Proxy = webProxy
}); });
var progress = new Progress<double>(); var progress = new Progress<string>();
progress.ProgressChanged += (sender, value) => progress.ProgressChanged += (sender, value) =>
{ {
if (UpdateCompleted != null) if (UpdateCompleted != null)
{ {
string msg = string.Format("{0} M/s", value.ToString("#0.0")).PadLeft(9, ' '); string msg = string.Format("{0} M/s", value).PadLeft(9, ' ');
UpdateCompleted(this, new ResultEventArgs(false, msg)); UpdateCompleted(this, new ResultEventArgs(false, msg));
} }
}; };