2025-10-20
C#
00

目录

今天写一下最近用到的设计模式吧~ 订阅-广播

今天写一下最近用到的设计模式吧~ 订阅-广播

首先声明一个发送站,其名字为 连接断开 ,当需要时,调用 连接断开.invoke()

这个invoke会广播通知所有订阅了此发送站的地方动作

也就是说定义了一个断开连接的空事件,各个模块对于这个空事件会写各自需要执行的逻辑,然后invoke的时候触发所有各自执行的逻辑 ( 广播通知大家一起干活 )

发送站(一个):

public event Action 连接断开; public void 触发连接断开() { 连接断开?.Invoke(); //这就是“广播”的地方 }

接收站(一个或多个):

信号.连接断开 += () => { 状态机复位(); Debug.WriteLine("状态机已复位"); }; 信号.连接断开 += () => { Dispatcher.Invoke(() => StatusText.Text = "PLC 断开"); }; 信号.连接断开 += () => { Logger.Warn("PLC 连接断开"); };

当 连接断开 事件触发后,它会广播所有订阅了它的方法,让它们全部触发,按道理来说是根据订阅的先后顺序依次触发的

注意

逻辑结束后记得取消订阅 "-=",否则可能会导致GC无法回收内存造成内存泄露

Ex : Closed += (o, e) => 日志写入类.日志写入事件 -= 日志写入;

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:猫猫

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!