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