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