From 76ad533edaa506ad1cc843693b2af87dbc8d3004 Mon Sep 17 00:00:00 2001 From: Kerry Jiang Date: Fri, 9 Feb 2024 22:46:48 -0800 Subject: [PATCH] optimized code in SocketConnector --- src/SuperSocket.Client/SocketConnector.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/SuperSocket.Client/SocketConnector.cs b/src/SuperSocket.Client/SocketConnector.cs index d5b3d2289..bd8dfac06 100644 --- a/src/SuperSocket.Client/SocketConnector.cs +++ b/src/SuperSocket.Client/SocketConnector.cs @@ -51,10 +51,14 @@ protected override async ValueTask ConnectAsync(EndPoint remoteEnd #if NET5_0_OR_GREATER await socket.ConnectAsync(remoteEndPoint, cancellationToken); #else - Task result = socket.ConnectAsync(remoteEndPoint); - int index = Task.WaitAny(new[] { result }, cancellationToken); - var connected = socket.Connected; - if (!connected) + Task connectTask = socket.ConnectAsync(remoteEndPoint); + + var tcs = new TaskCompletionSource(); + cancellationToken.Register(() => tcs.SetResult(false)); + + await Task.WhenAny(new[] { connectTask, tcs.Task }); + + if (!socket.Connected) { socket.Close();