From 540f5c788d328c95f2cce5af4cd27edb1061345d Mon Sep 17 00:00:00 2001 From: SikongJueluo Date: Thu, 10 Jul 2025 16:29:10 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=85=8D=E7=BD=AE=E6=91=84=E5=83=8F?= =?UTF-8?q?=E5=A4=B4=E5=BF=85=E9=A1=BB=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/src/Services/HttpVideoStreamService.cs | 68 ++++++++----------- 1 file changed, 29 insertions(+), 39 deletions(-) diff --git a/server/src/Services/HttpVideoStreamService.cs b/server/src/Services/HttpVideoStreamService.cs index 2170988..73e2819 100644 --- a/server/src/Services/HttpVideoStreamService.cs +++ b/server/src/Services/HttpVideoStreamService.cs @@ -166,51 +166,41 @@ public class HttpVideoStreamService : BackgroundService try { - await Task.Run(async () => + lock (_cameraLock) { - lock (_cameraLock) + // 关闭现有连接 + if (_camera != null) { - // 如果地址和端口没有变化,直接返回成功 - if (_cameraAddress == address && _cameraPort == port && _camera != null) - { - logger.Info("摄像头配置未变化,保持当前连接"); - return; - } - - // 关闭现有连接 - if (_camera != null) - { - logger.Info("关闭现有摄像头连接"); - // Camera doesn't have Dispose method, set to null - _camera = null; - } - - // 更新配置 - _cameraAddress = address; - _cameraPort = port; - - // 创建新的摄像头客户端 - _camera = new Camera(_cameraAddress, _cameraPort); - - logger.Info("摄像头配置已更新: {Address}:{Port}", _cameraAddress, _cameraPort); + logger.Info("关闭现有摄像头连接"); + // Camera doesn't have Dispose method, set to null + _camera = null; } - // Init Camera - { - var ret = await _camera.Init(); - if (!ret.IsSuccessful) - { - logger.Error(ret.Error); - throw ret.Error; - } + // 更新配置 + _cameraAddress = address; + _cameraPort = port; - if (!ret.Value) - { - logger.Error($"Camera Init Failed!"); - throw new Exception($"Camera Init Failed!"); - } + // 创建新的摄像头客户端 + _camera = new Camera(_cameraAddress, _cameraPort); + + logger.Info("摄像头配置已更新: {Address}:{Port}", _cameraAddress, _cameraPort); + } + + // Init Camera + { + var ret = await _camera.Init(); + if (!ret.IsSuccessful) + { + logger.Error(ret.Error); + throw ret.Error; } - }); + + if (!ret.Value) + { + logger.Error($"Camera Init Failed!"); + throw new Exception($"Camera Init Failed!"); + } + } return true; } catch (Exception ex)