首页 > 其他分享 >消息中心

消息中心

时间:2023-02-08 11:33:24浏览次数:29  
标签:中心 msgdic keys System 消息 action using id

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _Test_
{
internal class MessManager:Singletion<MessManager>
{
Dictionary<int, Action<object>> keys = new Dictionary<int, Action<object>>();

public void AddListerner(int id,Action<object> action)
{
if(keys.ContainsKey(id))
{
keys[id] += action;
}
else
{
keys.Add(id, action);
}
}

public void RemoveListerner(int id,Action<object> action)
{
if(keys.ContainsKey(id))
{
keys[id] -= action;
}
}

public void DisPlay(int id,params object[] arr)
{
if(keys.ContainsKey(id))
{
keys[id](arr);
}
}
}
}

 

 

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// 消息中心 管理类
/// </summary>
public class MessageManager : Singleton<MessageManager> {

Dictionary<int,Action<object>> msgdic=new Dictionary<int, Action<object>>();
/// <summary>
/// 监听消息的方法
/// </summary>
/// <param name="id">消息号</param>
/// <param name="action">具体事件</param>
public void OnAddListeen(int id,Action<object> action)
{
if (msgdic.ContainsKey(id))
{
msgdic[id] += action;
}
else
{
msgdic.Add(id,action);
}
}
/// <summary>
/// 移除监听消息的方法
/// </summary>
/// <param name="id">消息号</param>
/// <param name="action">具体事件</param>
public void OnRemoveListeen(int id,Action<object> action)
{
if (msgdic.ContainsKey(id))
{
msgdic[id] -= action;
if (msgdic[id]==null)
{
msgdic.Remove(id);
}
}
}
/// <summary>
/// 消息分发
/// </summary>
public void OnDisPatch(int id,params object[] arr)
{
if (msgdic.ContainsKey(id))
{
// Action<object> action_TEMP = msgdic[id];
// action_TEMP(arr);

msgdic[id](arr);
}
else
{
Debug.LogError("消息"+id+"未注册");
}
}
}

 

标签:中心,msgdic,keys,System,消息,action,using,id
From: https://www.cnblogs.com/MFC6666/p/17101141.html

相关文章

  • React:消息订阅(subscribe)-发布(publish)机制
    发布类似触发事件, 订阅类似监听事件使用这种方式的好处是,兄弟组件间通信不必再像使用props那种通过父组件来通信,多层组件之间通信也不必在一层一层的传递,直接在触发事件......
  • OpenHarmony开发15 —— 消息队列
    OpenHarmony开发15——消息队列说点别的,这几天没更新真的是被这个消息队列折磨完了,谁知道鬼鸿蒙它不进行任何提示!为什么stackoverflow会不提示啊!!!太折磨了太折磨了......
  • ChatGPT自动回复消息
    介绍微信连接ChatGPT,实现微信私聊自动回复消息(群聊回复需@)条件上网长登录的微信小号一个注册&登录ChatGPT官网地址:https://openai.com/api/注册需要一个邮箱(建......
  • RabbitMQ 消息的可靠投递
    rabbitmq整个消息投递的路径为: produce--->rabbitmqbroker--->exchange--->queue--->consumer 1.1 生产端可靠性在使用RabbitMQ的时候,作为消息发送方希望杜......
  • freeswitch笔记(5)-小型呼叫中心设计思路
    这一篇用esl实战一把,利用eslclient来实现一个小型呼叫中心的原型,先看看下面这张图: 企业通常会对外公布一个400之类的服务电话,当用户拨打这个电话时,实际上背后是一堆客......
  • 消息队列数据丢失及可靠性
    用MQ有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费和幂等性问题。不能少,就是说这数据别搞丢了。那这个问题你必须得考虑一下。如果说你这个......
  • 消息队列的延时以及过期失效,消息队列消息积压及占满问题解决思路
    大量消息在mq里积压了几个小时了还没解决几千万条数据在MQ里积压了七八个小时,从下午4点多,积压到了晚上11点多。这个是我们真实遇到过的一个场景,确实是线上故障了......
  • 消息队列部署选择
    部署是单机还是集群呢?你们高可用是怎么保证的呢?如果有人问到你MQ的知识,高可用是必问的。上一讲提到,MQ会导致系统可用性降低。所以只要你用了MQ,接下来问的一些要点......
  • 火山引擎ByteHouse助力中国地震台网中心,快速构建一站式实时数仓
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群近日,中国地震台网中心与火山引擎达成合作,双方将围绕ByteHouse实时数仓展开合作。中国地震台......
  • 火山引擎ByteHouse助力中国地震台网中心,快速构建一站式实时数仓
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群近日,中国地震台网中心与火山引擎达成合作,双方将围绕ByteHouse实时数仓展开合作。中国地......