主应用新增PLC和探测器硬件资源正确释放。

This commit is contained in:
QI Mingxuan
2026-05-08 17:59:10 +08:00
parent 229c5c5a89
commit fa8ad29862
2 changed files with 38 additions and 1 deletions
@@ -1,3 +1,4 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using XP.Hardware.Detector.Abstractions;
@@ -10,7 +11,7 @@ namespace XP.Hardware.Detector.Services
/// 探测器服务接口 | Detector service interface
/// 提供无厂商耦合的通用服务方法
/// </summary>
public interface IDetectorService
public interface IDetectorService : IDisposable
{
/// <summary>
/// 当前探测器状态 | Current detector status
+36
View File
@@ -27,8 +27,12 @@ using XP.Common.Logging.Implementations;
using XP.Common.Logging.Interfaces;
using XP.Common.Module;
using XP.Hardware.Detector.Module;
using XP.Hardware.Detector.Services;
using XP.Hardware.MotionControl.Module;
using XP.Hardware.Plc.Abstractions;
using XP.Hardware.PLC;
using XP.Hardware.PLC.Abstractions;
using XP.Hardware.PLC.Services;
using XP.Hardware.RaySource.Module;
using XP.Hardware.RaySource.Services;
using XplorePlane.Services;
@@ -217,6 +221,38 @@ namespace XplorePlane
Log.Error(ex, "数据库资源释放失败,忽略该错误继续退出 | Database resource release failed, ignoring error and continuing exit");
}
// 释放 PLC 资源
try
{
var bootstrapper = AppBootstrapper.Instance;
if (bootstrapper != null)
{
var plcService = bootstrapper.Container.Resolve<IPlcService>();
plcService?.Dispose();
Log.Information("PLC 资源已释放");
}
}
catch (Exception ex)
{
Log.Error(ex, "PLC 资源释放失败");
}
// 释放探测器资源
try
{
var bootstrapper = AppBootstrapper.Instance;
if (bootstrapper != null)
{
var detectorService = bootstrapper.Container.Resolve<IDetectorService>();
detectorService?.Dispose();
Log.Information("探测器资源已释放");
}
}
catch (Exception ex)
{
Log.Error(ex, "探测器资源释放失败");
}
Log.CloseAndFlush();
base.OnExit(e);
}