WPF实现软件内部通知,同JS,VUE的EventBus

EventBus是在开发APP和小程序等前端应用时,比较常用的发布 订阅事件总线。今天在开发WPF桌面应用时,需要在后台进程同时通知到页面和弹窗。我就想到了这样一类,其它挺简单的一个类,

EventBus是在开发APP和小程序等前端应用时,比较常用的发布/订阅事件总线。今天在开发WPF桌面应用时,需要在后台进程同时通知到页面和弹窗。我就想到了这样一类,其它挺简单的一个类,定义一个事件。添加 注册、发送、接收等方法。我这里的On方法是来注册的。

public class EventBus
{
    private static EventBus GlobalDispatcher;
    public delegate void EventHandler(params object[] objs);
    private readonly Dictionary EventListeners = new Dictionary();
    public static EventBus Dispatcher
    {
        get
        {
            if (GlobalDispatcher == null) { GlobalDispatcher = new EventBus(); }
            return GlobalDispatcher;
        }
    }

    public void On(String evt, EventHandler handler)
    {
        if (EventListeners.ContainsKey(evt)) { EventListeners[evt] += handler; }
        else { EventListeners.Add(evt, handler); }
    }

    public void Emit(String evt, params object[] objs)
    {
        if (EventListeners.ContainsKey(evt)) { EventListeners[evt](objs); }
    }

    public void Off(String evt, EventHandler handler)
    {
        if (EventListeners.ContainsKey(evt))
        {
            EventListeners[evt] -= handler;
            if (EventListeners[evt] == null) { EventListeners.Remove(evt); }
        }
    }
}
(152)
打赏 支付红包 支付红包 微信打赏 微信打赏
上一篇 2023-05-18 14:38:00
下一篇 2024-01-08 10:57:35

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信