From 587c0d3fc2020d8f6b4612612941b42cb47bf32f Mon Sep 17 00:00:00 2001 From: hjhan Date: Fri, 28 Aug 2026 15:45:08 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=AE=9E=E6=97=B6=E6=8C=81=E4=BB=93?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E8=BD=AE=E8=AF=A2=E5=BE=AA=E7=8E=AF=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E7=AD=89=E5=BE=85=E9=97=B4=E9=9A=94=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=E6=96=B0=E6=B5=81=E6=B0=B4=E5=A2=9E=E9=87=8F=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E5=9F=BA=E5=87=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Worker: 风险/预付金计算由连续空转改为30秒一轮(可被取消令牌立即唤醒) - ClientPosiTask: HasNewFlow 改为与上次计算时间比较(原误传当前时间致增量判断失效),轮询间隔2秒 - 30秒兜底全量重算语义保留不变 --- YLWinSer/RealTimeCalcPositionService/ClientPosiTask.cs | 6 +++++- YLWinSer/RealTimeCalcPositionService/Worker.cs | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/YLWinSer/RealTimeCalcPositionService/ClientPosiTask.cs b/YLWinSer/RealTimeCalcPositionService/ClientPosiTask.cs index f1074f1a..3ea5cb86 100644 --- a/YLWinSer/RealTimeCalcPositionService/ClientPosiTask.cs +++ b/YLWinSer/RealTimeCalcPositionService/ClientPosiTask.cs @@ -40,7 +40,10 @@ namespace RealTimeCalcPositionService { string calctime = memoryCache.Get("calctime"); var currentTime = DateTime.Now; - bool hasNew= RealtimePnlCalc.HasNewFlow(currentTime); + //以上次计算时间为基准判断是否有新流水,避免无变化时空转重算 + var hasNew = DateTime.TryParseExact(calctime, "yyyy-MM-dd HH:mm:ss.fff", + System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out var lastCalcTime) + && RealtimePnlCalc.HasNewFlow(lastCalcTime); if (string.IsNullOrEmpty(calctime)|| hasNew) { memoryCache.Set("calctime", currentTime.ToString("yyyy-MM-dd HH:mm:ss.fff"), TimeSpan.FromSeconds(30)); @@ -53,6 +56,7 @@ namespace RealTimeCalcPositionService _logger.Error(ex, "实时持仓服务异常:" + ex.Message); } } + stoppingToken.WaitHandle.WaitOne(TimeSpan.FromSeconds(2)); } } public async Task StopAsync(CancellationToken cancellationToken) diff --git a/YLWinSer/RealTimeCalcPositionService/Worker.cs b/YLWinSer/RealTimeCalcPositionService/Worker.cs index 1da6d82d..a4de7a1c 100644 --- a/YLWinSer/RealTimeCalcPositionService/Worker.cs +++ b/YLWinSer/RealTimeCalcPositionService/Worker.cs @@ -47,7 +47,9 @@ namespace RealTimeCalcPositionService { _logger.Error(ex, "ʵʱԤ쳣:" + ex.Message); } - + + //ֵв䡢¼ѯ + stoppingToken.WaitHandle.WaitOne(TimeSpan.FromSeconds(30)); } } public async Task StopAsync(CancellationToken cancellationToken)