From 6d15ddc0a468c8a72b76188d4378c6387b231878 Mon Sep 17 00:00:00 2001 From: jiuqianyuan <39406781+jiuqianyuan@users.noreply.github.com> Date: Sun, 23 Nov 2025 20:05:57 +0800 Subject: [PATCH] Fix: High latency in tcping test due to thread blocking --- v2rayN/ServiceLib/Services/SpeedtestService.cs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/v2rayN/ServiceLib/Services/SpeedtestService.cs b/v2rayN/ServiceLib/Services/SpeedtestService.cs index 00f54427..4389702a 100644 --- a/v2rayN/ServiceLib/Services/SpeedtestService.cs +++ b/v2rayN/ServiceLib/Services/SpeedtestService.cs @@ -335,15 +335,14 @@ public class SpeedtestService(Config config, Func updateF using Socket clientSocket = new(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); var timer = Stopwatch.StartNew(); - var result = clientSocket.BeginConnect(endPoint, null, null); - if (!result.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(5))) - { - throw new TimeoutException("connect timeout (5s): " + url); - } + using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5)); + await clientSocket.ConnectAsync(endPoint, cts.Token).ConfigureAwait(false); timer.Stop(); responseTime = (int)timer.Elapsed.TotalMilliseconds; - - clientSocket.EndConnect(result); + } + catch (OperationCanceledException) + { + // 超时情况,responseTime保持为-1 } catch (Exception ex) {