From 9137bd092408a24d87c474d61550e24446ab30e9 Mon Sep 17 00:00:00 2001 From: jiuqianyuan <39406781+jiuqianyuan@users.noreply.github.com> Date: Mon, 24 Nov 2025 15:59:01 +0800 Subject: [PATCH] Fix: download to fast, speed displayed as 0. --- v2rayN/ServiceLib/Helper/DownloaderHelper.cs | 32 ++++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/v2rayN/ServiceLib/Helper/DownloaderHelper.cs b/v2rayN/ServiceLib/Helper/DownloaderHelper.cs index 000685a0..907d416f 100644 --- a/v2rayN/ServiceLib/Helper/DownloaderHelper.cs +++ b/v2rayN/ServiceLib/Helper/DownloaderHelper.cs @@ -71,28 +71,25 @@ public class DownloaderHelper } }; - var totalDatetime = DateTime.Now; - var totalSecond = 0; + var lastUpdateTime = DateTime.Now; var hasValue = false; double maxSpeed = 0; await using var downloader = new Downloader.DownloadService(downloadOpt); - //downloader.DownloadStarted += (sender, value) => - //{ - // if (progress != null) - // { - // progress.Report("Start download data..."); - // } - //}; + downloader.DownloadProgressChanged += (sender, value) => { - var ts = DateTime.Now - totalDatetime; - if (progress != null && ts.Seconds > totalSecond) + if (progress != null && value.BytesPerSecondSpeed > 0) { hasValue = true; - totalSecond = ts.Seconds; if (value.BytesPerSecondSpeed > maxSpeed) { maxSpeed = value.BytesPerSecondSpeed; + } + + var ts = DateTime.Now - lastUpdateTime; + if (ts.TotalMilliseconds >= 1000) + { + lastUpdateTime = DateTime.Now; var speed = (maxSpeed / 1000 / 1000).ToString("#0.0"); progress.Report(speed); } @@ -102,10 +99,19 @@ public class DownloaderHelper { if (progress != null) { - if (!hasValue && value.Error != null) + if (hasValue && maxSpeed > 0) + { + var finalSpeed = (maxSpeed / 1000 / 1000).ToString("#0.0"); + progress.Report(finalSpeed); + } + else if (value.Error != null) { progress.Report(value.Error?.Message); } + else + { + progress.Report("0"); + } } }; //progress.Report("......");