1 feat(mqtt): 实现MQTT服务器状态管理与事件系统
2
3 1. 在MqttServer和MqttServerDto模型中添加IsConnect属性,用于跟踪连接状态
4 2. 重构MqttManagementService服务,使用事件驱动方式管理服务器状态变化
5 3. 实现MqttServerChangedEventArgs事件参数类,支持区分不同变更类型
6 4. 在IEventService中添加OnMqttServerChanged事件,实现事件通知机制
7 5. 优化数据存储结构,将MqttServers从ObservableCollection改为ObservableDictionary
8 6. 更新MqttServiceManager以正确处理连接状态和事件触发
9 7. 在WPF层更新UI以响应服务器状态变化
10 8. 删除不再需要的Helper类(DataServicesHelper, MessageHelper, SiemensHelper)
11 9. 在NLog配置中添加调试器输出目标以便调试
12 10. 完善VariableHistoryViewModel防止空引用异常
This commit is contained in:
@@ -48,13 +48,74 @@ public class DataEventService : IDataEventService
|
||||
|
||||
// 监听变量值变更事件
|
||||
_eventService.OnVariableValueChanged += OnVariableValueChanged;
|
||||
_eventService.OnMqttServerChanged += OnMqttServerChanged;
|
||||
_appDataCenterService.DataLoaderService.OnLoadDataCompleted += OnLoadDataCompleted;
|
||||
// 监听日志变更事件
|
||||
// _appDataCenterService.OnLogChanged += _logDataService.OnNlogChanged;
|
||||
|
||||
_logger?.LogInformation("DataEventService 初始化完成");
|
||||
}
|
||||
|
||||
|
||||
private void OnMqttServerChanged(object? sender, MqttServerChangedEventArgs e)
|
||||
{
|
||||
_logger?.LogDebug("接收到Mqtt服务器状态发生了改变,服务器名称:{mqttName}属性: {mqttProperty}",
|
||||
e.MqttServer.ServerName, e.PropertyType);
|
||||
|
||||
// 在UI线程上更新变量值
|
||||
App.Current.Dispatcher.BeginInvoke(new Action(() =>
|
||||
{
|
||||
//// 查找并更新对应的变量
|
||||
if (_dataStorageService.MqttServers.TryGetValue(e.MqttServer.Id, out var mqttServerItem))
|
||||
{
|
||||
if (e.ChangeType == ActionChangeType.Updated)
|
||||
{
|
||||
switch (e.PropertyType)
|
||||
{
|
||||
case MqttServerPropertyType.ServerName:
|
||||
break;
|
||||
case MqttServerPropertyType.ServerUrl:
|
||||
break;
|
||||
case MqttServerPropertyType.Port:
|
||||
break;
|
||||
case MqttServerPropertyType.IsConnect:
|
||||
mqttServerItem.IsConnect=e.MqttServer.IsConnect;
|
||||
break;
|
||||
case MqttServerPropertyType.Username:
|
||||
break;
|
||||
case MqttServerPropertyType.Password:
|
||||
break;
|
||||
case MqttServerPropertyType.IsActive:
|
||||
break;
|
||||
case MqttServerPropertyType.SubscribeTopic:
|
||||
break;
|
||||
case MqttServerPropertyType.PublishTopic:
|
||||
break;
|
||||
case MqttServerPropertyType.ClientId:
|
||||
break;
|
||||
case MqttServerPropertyType.MessageFormat:
|
||||
break;
|
||||
case MqttServerPropertyType.MessageHeader:
|
||||
break;
|
||||
case MqttServerPropertyType.MessageContent:
|
||||
break;
|
||||
case MqttServerPropertyType.MessageFooter:
|
||||
break;
|
||||
case MqttServerPropertyType.All:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger?.LogWarning("在Mqtt服务器队列中找不到ID为 {MqttServer} 的变量,无法更新值", e.MqttServer.Id);
|
||||
}
|
||||
}));
|
||||
|
||||
}
|
||||
|
||||
private void OnLoadDataCompleted(object? sender, DataLoadCompletedEventArgs e)
|
||||
{
|
||||
_logger?.LogDebug("接收到数据加载完成事件,成功: {IsSuccess}", e.IsSuccess);
|
||||
|
||||
Reference in New Issue
Block a user