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) {