using System; using System.Collections.Concurrent; using System.Threading; using System.Threading.Tasks; using DMS.Application.Interfaces; using DMS.Core.Events; using DMS.Core.Models; using Microsoft.Extensions.Logging; namespace DMS.Application.Services; /// /// 设备监视服务实现类,用于监视设备的状态变化 /// public class DeviceMonitoringService : IDeviceMonitoringService, IDisposable { private readonly ILogger _logger; private readonly IEventService _eventService; private readonly IAppDataStorageService _appDataStorageService; private readonly IAppDataCenterService _appDataCenterService; /// /// 初始化DeviceMonitoringService类的新实例 /// /// 日志记录器 /// 设备应用服务 public DeviceMonitoringService(ILogger logger, IEventService eventService, IAppDataStorageService appDataStorageService, IAppDataCenterService appDataCenterService) { _logger = logger; _eventService = eventService; _appDataStorageService = appDataStorageService; _appDataCenterService = appDataCenterService; _eventService.OnDeviceActiveChanged += OnDeviceActiveChanged; } private void OnDeviceActiveChanged(object? sender, DeviceActiveChangedEventArgs e) { if (_appDataStorageService.Devices.TryGetValue(e.DeviceId, out var device)) { // 更新设备激活状态 - 同时更新数据库和内存 _ = Task.Run(async () => { await _appDataCenterService.DeviceManagementService.UpdateDeviceAsync(device); }); } } public void Dispose() { _eventService.OnDeviceActiveChanged -= OnDeviceActiveChanged; } }