From a3aa6c045f5b344c8e8b731348fa65c2646eeb92 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Tue, 12 Apr 2022 13:38:42 +0800 Subject: [PATCH] Improve speed test --- v2rayN/v2rayN/Base/HttpClientHelper.cs | 21 +++++++++++++++------ v2rayN/v2rayN/Handler/DownloadHandle.cs | 2 +- v2rayN/v2rayN/Handler/SpeedtestHandler.cs | 2 +- v2rayN/v2rayN/Resx/ResUI.Designer.cs | 9 +++++++++ v2rayN/v2rayN/Resx/ResUI.resx | 3 +++ v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx | 3 +++ 6 files changed, 32 insertions(+), 8 deletions(-) diff --git a/v2rayN/v2rayN/Base/HttpClientHelper.cs b/v2rayN/v2rayN/Base/HttpClientHelper.cs index e5de5ad2..0e17d5ca 100644 --- a/v2rayN/v2rayN/Base/HttpClientHelper.cs +++ b/v2rayN/v2rayN/Base/HttpClientHelper.cs @@ -16,7 +16,6 @@ namespace v2rayN.Base { private static HttpClientHelper httpClientHelper = null; private HttpClient httpClient; - private int progressPercentage = -1; /// /// @@ -120,7 +119,7 @@ namespace v2rayN.Base var totalRead = 0L; var buffer = new byte[1024 * 1024]; var isMoreToRead = true; - progressPercentage = -1; + var progressPercentage = 0; do { @@ -183,14 +182,24 @@ namespace v2rayN.Base using (var stream = await response.Content.ReadAsStreamAsync()) { var totalRead = 0L; - var buffer = new byte[1024 * 128]; + var buffer = new byte[1024 * 64]; var isMoreToRead = true; - progressPercentage = -1; + var progressPercentage = 0; DateTime totalDatetime = DateTime.Now; do { - token.ThrowIfCancellationRequested(); + if (token.IsCancellationRequested) + { + if (totalRead > 0) + { + return; + } + else + { + token.ThrowIfCancellationRequested(); + } + } var read = await stream.ReadAsync(buffer, 0, buffer.Length, token); @@ -211,7 +220,7 @@ namespace v2rayN.Base TimeSpan ts = (DateTime.Now - totalDatetime); var speed = totalRead * 1d / ts.TotalMilliseconds / 1000; var percent = Convert.ToInt32((totalRead * 1d) / (total * 1d) * 100); - if (progressPercentage != percent && percent % 2 == 1) + if (progressPercentage != percent) { progressPercentage = percent; progress.Report(speed); diff --git a/v2rayN/v2rayN/Handler/DownloadHandle.cs b/v2rayN/v2rayN/Handler/DownloadHandle.cs index 398b2773..131fadf5 100644 --- a/v2rayN/v2rayN/Handler/DownloadHandle.cs +++ b/v2rayN/v2rayN/Handler/DownloadHandle.cs @@ -39,7 +39,7 @@ namespace v2rayN.Handler try { Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().enableSecurityProtocolTls13); - UpdateCompleted?.Invoke(this, new ResultEventArgs(false, ResUI.Downloading)); + UpdateCompleted?.Invoke(this, new ResultEventArgs(false, ResUI.Speedtesting)); var client = new HttpClient(new WebRequestHandler() { diff --git a/v2rayN/v2rayN/Handler/SpeedtestHandler.cs b/v2rayN/v2rayN/Handler/SpeedtestHandler.cs index 39199ef8..23e3f370 100644 --- a/v2rayN/v2rayN/Handler/SpeedtestHandler.cs +++ b/v2rayN/v2rayN/Handler/SpeedtestHandler.cs @@ -187,7 +187,7 @@ namespace v2rayN.Handler }; downloadHandle2.Error += (sender2, args) => { - _updateFunc("", args.GetException().Message); + _updateFunc(testIndexId, args.GetException().Message); }; var timeout = 8; diff --git a/v2rayN/v2rayN/Resx/ResUI.Designer.cs b/v2rayN/v2rayN/Resx/ResUI.Designer.cs index 6ef6f690..f3fcaace 100644 --- a/v2rayN/v2rayN/Resx/ResUI.Designer.cs +++ b/v2rayN/v2rayN/Resx/ResUI.Designer.cs @@ -879,6 +879,15 @@ namespace v2rayN.Resx { } } + /// + /// 查找类似 Speed Test... 的本地化字符串。 + /// + internal static string Speedtesting { + get { + return ResourceManager.GetString("Speedtesting", resourceCulture); + } + } + /// /// 查找类似 PAC failed to start. Run it with Admin right. 的本地化字符串。 /// diff --git a/v2rayN/v2rayN/Resx/ResUI.resx b/v2rayN/v2rayN/Resx/ResUI.resx index b2663072..9a4c256f 100644 --- a/v2rayN/v2rayN/Resx/ResUI.resx +++ b/v2rayN/v2rayN/Resx/ResUI.resx @@ -457,4 +457,7 @@ System proxy + + Speed Test... + \ No newline at end of file diff --git a/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx b/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx index e2898392..38e342e9 100644 --- a/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx +++ b/v2rayN/v2rayN/Resx/ResUI.zh-Hans.resx @@ -457,4 +457,7 @@ 系统代理 + + 测速中... + \ No newline at end of file