C#事件声明办法

csharp 复制代码
 public event Action<string>? OnLogMessage;
 public event Action<bool>? OnAutoRunCompleted;

  _modbusClient.OnLogMessage += LogMessage;
 _modbusClient.OnDeviceStatusChanged += OnModbusDeviceStatusChanged;


//------直接调用
  //_plcModbusClient.OnLogMessage += (msg) => LogMessage($"[PLC串口] {msg}");
  //_plcModbusClient.OnDeviceStatusChanged += (addr, online) =>
  //{
  //    LogMessage($"PLC设备 {addr} 状态: {(online ? "在线" : "离线")}");
 // };

 private void LogMessage(string message)
 {
     if (txtLog.InvokeRequired)
     {
         txtLog.Invoke(new Action<string>(LogMessage), message);
         return;
     }
     txtLog.AppendText($"[{DateTime.Now:HH:mm:ss}] {message}\r\n");
     txtLog.ScrollToCaret();

 }



private void OnModbusDeviceStatusChanged(byte address, bool isOnline)
{
    if (InvokeRequired)
    {
        Invoke(new Action(() => OnModbusDeviceStatusChanged(address, isOnline)));
        return;
    }
    LogMessage($"Modbus设备 {address} 状态: {(isOnline ? "在线" : "离线")}");
}
相关推荐
DevOpenClub1 小时前
职教高考控制线 API:招生类别枚举、筛选与空分数含义
java·数据库·高考
风骏时光牛马1 小时前
生成一个移动端标题,只需要一个标题,不需要其他的任何文本。
前端
IT_陈寒1 小时前
Redis雪崩把我坑惨了,这是5年经验的教训
前端·人工智能·后端
SameX2 小时前
HarmonyOS ArkUI List 的侧滑删除 用 ListItem 的 swipeAction + endIcon 的做法
前端
露天赏雪2 小时前
第3篇:Sentinel熔断降级实战:大模型接口抖动时的服务兜底方案
java·开发语言·人工智能·spring boot·spring·servlet·sentinel
天天被压力2 小时前
【A股分钟级高频数据完全手册 #06】北交所分钟级数据接口:京市股票Pro版最新分时
java·人工智能·python
天天被压力2 小时前
【A股分钟级高频数据完全手册 #05】指数历史分钟数据接口:Pro版沪深指数分时回放
java·人工智能·python
captain3763 小时前
▲统一功能——DispatcherServlet源码分析
java·spring·java-ee·log4j·maven
金銀銅鐵3 小时前
JDK 21 中 List.of 的实现细节:从 List12 到 ListN
java·后端·ai编程
usdoc文档预览4 小时前
USDOC系列之PPT文件在线编辑-VUE前端实现在线浏览器在线编辑PPT文档
前端·vue.js·编辑器·office365·ppt在线编辑·office文件在线编辑·文件在线编辑