From d9ae46fbdd1687dd1995bbca42f758f2f7796477 Mon Sep 17 00:00:00 2001 From: root <295172551@qq.com> Date: Mon, 23 Jun 2025 23:31:55 +0800 Subject: [PATCH] 111 --- LTEMvcApp/Services/LTEClientWebSocket.cs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/LTEMvcApp/Services/LTEClientWebSocket.cs b/LTEMvcApp/Services/LTEClientWebSocket.cs index 4312fcb..0f94b41 100644 --- a/LTEMvcApp/Services/LTEClientWebSocket.cs +++ b/LTEMvcApp/Services/LTEClientWebSocket.cs @@ -197,11 +197,10 @@ namespace LTEMvcApp.Services /// public void Stop() { - var oldLogGetId = _logGetId; + var oldLogGetId = Interlocked.Exchange(ref _logGetId, -1); SetState(ClientState.Stop); StopTimers(); _isSocketReady = false; // 重置连接状态标志 - _logGetId = -1; // 重置LogGet ID _logger.LogDebug($"[{_config.Name}] 停止连接,LogGet ID重置: {oldLogGetId} -> {_logGetId}"); } @@ -410,9 +409,10 @@ namespace LTEMvcApp.Services } } - var oldLogGetId = _logGetId; - _logGetId = SendMessage(message, LogGetParse); - _logger.LogDebug($"[{_config.Name}] LogGet ID变化: {oldLogGetId} -> {_logGetId}, 参数: {JsonConvert.SerializeObject(parameters)}"); + var oldLogGetId = Interlocked.Exchange(ref _logGetId, -1); // 临时设置为-1,防止重复 + var newLogGetId = SendMessage(message, LogGetParse); + Interlocked.Exchange(ref _logGetId, newLogGetId); // 设置新的LogGet ID + _logger.LogDebug($"[{_config.Name}] LogGet ID变化: {oldLogGetId} -> {newLogGetId}, 参数: {JsonConvert.SerializeObject(parameters)}"); } /// @@ -446,7 +446,7 @@ namespace LTEMvcApp.Services /// 当前LogGet ID public int GetCurrentLogGetId() { - return _logGetId; + return Interlocked.CompareExchange(ref _logGetId, -1, -1); } #endregion @@ -479,8 +479,7 @@ namespace LTEMvcApp.Services _isSocketReady = false; // 重置LogGet ID - var oldLogGetId = _logGetId; - _logGetId = -1; + var oldLogGetId = Interlocked.Exchange(ref _logGetId, -1); _logger.LogDebug($"[{_config.Name}] 连接关闭,LogGet ID重置: {oldLogGetId} -> {_logGetId}"); if (State == ClientState.Connected) @@ -847,14 +846,15 @@ namespace LTEMvcApp.Services } // 更新日志获取 - 只有在最后一个请求时才更新 - if (msg["message_id"]?.Value() == _logGetId) + var currentLogGetId = Interlocked.CompareExchange(ref _logGetId, -1, -1); + if (msg["message_id"]?.Value() == currentLogGetId) { - _logger.LogDebug($"[{_config.Name}] 收到最后一个LogGet响应: message_id={msg["message_id"]}, _logGetId={_logGetId}, 继续获取日志"); + _logger.LogDebug($"[{_config.Name}] 收到最后一个LogGet响应: message_id={msg["message_id"]}, _logGetId={currentLogGetId}, 继续获取日志"); LogGet(); } else { - _logger.LogDebug($"[{_config.Name}] 收到LogGet响应: message_id={msg["message_id"]}, _logGetId={_logGetId}, 不是最后一个请求"); + _logger.LogDebug($"[{_config.Name}] 收到LogGet响应: message_id={msg["message_id"]}, _logGetId={currentLogGetId}, 不是最后一个请求"); } }