using System; using System.Collections.Concurrent; using System.Threading; using System.Threading.Tasks; using DMS.Application.Events; 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 IAppDataService _appDataService; private readonly IAppCenterService _appCenterService; /// /// 初始化DeviceMonitoringService类的新实例 /// /// 日志记录器 /// 设备应用服务 public DeviceMonitoringService(ILogger logger, IEventService eventService, IAppDataService appStorageService, IAppCenterService appCenterService) { _logger = logger; _eventService = eventService; _appDataService = appStorageService; _appCenterService = appCenterService; _eventService.OnDeviceStateChanged += OnDeviceStateChanged; } private void OnDeviceStateChanged(object? sender, DeviceStateChangedEventArgs e) { // 只处理激活状态变化事件 if (e.StateType == Core.Enums.DeviceStateType.Active) { if (_appDataService.Devices.TryGetValue(e.DeviceId, out var device)) { // 更新设备激活状态 - 同时更新数据库和内存 _ = Task.Run(async () => { await _appCenterService.DeviceManagementService.UpdateDeviceAsync(device); }); } } } public void Dispose() { _eventService.OnDeviceStateChanged -= OnDeviceStateChanged; } }