From f03c8ec5d7b0fa5dc41a73988dbb1891425be9e5 Mon Sep 17 00:00:00 2001 From: zqm Date: Tue, 28 Apr 2026 10:04:19 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3xml=E5=91=8A=E8=AD=A6?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=8C=E8=A7=A3=E5=86=B3=E5=A4=9A=E5=8F=91?= =?UTF-8?q?=E9=87=8D=E8=BF=9E=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CubeLib/CubeLib/CubeLib.csproj | 3 ++- .../CubeLib/CubeLib/Properties/AssemblyInfo.cs | 4 ++-- .../CubeLib/WebSocket/WebSocketClient.cs | 18 +++++++++++++++++- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/Windows/CS/Framework4.0/CubeLib/CubeLib/CubeLib.csproj b/Windows/CS/Framework4.0/CubeLib/CubeLib/CubeLib.csproj index 5376b75..0fff393 100644 --- a/Windows/CS/Framework4.0/CubeLib/CubeLib/CubeLib.csproj +++ b/Windows/CS/Framework4.0/CubeLib/CubeLib/CubeLib.csproj @@ -1,4 +1,4 @@ - + @@ -32,6 +32,7 @@ TRACE prompt 4 + bin\Release\JoyD.Windows.CS.CubeLib.xml diff --git a/Windows/CS/Framework4.0/CubeLib/CubeLib/Properties/AssemblyInfo.cs b/Windows/CS/Framework4.0/CubeLib/CubeLib/Properties/AssemblyInfo.cs index 8809877..c2548c7 100644 --- a/Windows/CS/Framework4.0/CubeLib/CubeLib/Properties/AssemblyInfo.cs +++ b/Windows/CS/Framework4.0/CubeLib/CubeLib/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 //通过使用 "*",如下所示: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.1.3")] -[assembly: AssemblyFileVersion("1.0.1.7")] +[assembly: AssemblyVersion("1.0.2.0")] +[assembly: AssemblyFileVersion("1.0.2.0")] diff --git a/Windows/CS/Framework4.0/CubeLib/CubeLib/WebSocket/WebSocketClient.cs b/Windows/CS/Framework4.0/CubeLib/CubeLib/WebSocket/WebSocketClient.cs index a5c5b08..6c753fd 100644 --- a/Windows/CS/Framework4.0/CubeLib/CubeLib/WebSocket/WebSocketClient.cs +++ b/Windows/CS/Framework4.0/CubeLib/CubeLib/WebSocket/WebSocketClient.cs @@ -21,6 +21,7 @@ namespace JoyD.Windows.CS.WebSocket private string _status = "disconnected"; private int _reconnectAttempts = 0; private int _reconnectDelay = 1000; + private volatile bool _isReconnectScheduled = false; // 事件 /// @@ -374,7 +375,12 @@ namespace JoyD.Windows.CS.WebSocket { ChangeStatus("reconnecting"); Reconnecting?.Invoke(this, EventArgs.Empty); - ScheduleReconnect(); + // 使用Try模式避免重复调度 + try { + ScheduleReconnect(); + } catch (Exception ex) { + LogError("调度重连失败: " + ex.Message); + } } else { @@ -436,7 +442,15 @@ namespace JoyD.Windows.CS.WebSocket private void ScheduleReconnect() { + // 防止重复调度重连 + if (_isReconnectScheduled) + { + Log("重连已计划,跳过本次调度"); + return; + } + CancelReconnect(); + _isReconnectScheduled = true; var delay = Math.Min(_reconnectDelay, _config.MaxReconnectDelay); Log("准备重连,延迟: " + delay + "ms"); @@ -444,6 +458,7 @@ namespace JoyD.Windows.CS.WebSocket _reconnectTimer = new System.Timers.Timer(delay); _reconnectTimer.Elapsed += (sender, e) => { + _isReconnectScheduled = false; _reconnectAttempts++; Log("开始重连,尝试次数: " + _reconnectAttempts); Connect(); @@ -465,6 +480,7 @@ namespace JoyD.Windows.CS.WebSocket _reconnectTimer = null; Log("已取消重连计划"); } + _isReconnectScheduled = false; } private void FlushQueue()