mirror of https://github.com/2dust/v2rayN
bug fix
parent
6259539c87
commit
3be93df63f
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue