解决xml告警问题,解决多发重连问题

This commit is contained in:
zqm
2026-04-28 10:04:19 +08:00
parent 09eb6fb1bd
commit f03c8ec5d7
3 changed files with 21 additions and 4 deletions

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
@@ -32,6 +32,7 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<DocumentationFile>bin\Release\JoyD.Windows.CS.CubeLib.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>

View File

@@ -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")]

View File

@@ -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;
// 事件
/// <summary>
@@ -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()