Beispiel #1
0
    /// <summary>
    /// 绑定数据处理模块
    /// </summary>
    public void AddListener(int actionType, HandleModule listener)
    {
        if (!handles.ContainsKey(actionType))
        {
            return;
        }

        if (handles[actionType] == null)
        {
            handles[actionType] = new HandleModule(listener);
        }
        else
        {
            handles[actionType] += listener;
        }
    }
Beispiel #2
0
    /// <summary>
    /// 处理数据过程
    /// </summary>
    public void DisposeProcess(DataPackage packet)
    {
        if (!actions.ContainsKey(packet.PacketType))
        {
            return;
        }

        ActionBase      action    = actions[packet.PacketType];
        HandleModule    handler   = handles[action.ActionType];
        ActionParameter parameter = new ActionParameter();

        parameter[ACTIONTYPE] = action.ActionType;
        action.Packet         = packet;
        if (action.ReceiveProcess(parameter) && handler != null)
        {
            lock (invokeQueue) invokeQueue.Enqueue(parameter);
        }
        action.Clean();
    }
Beispiel #3
0
    /// <summary>
    /// 移除绑定数据处理模块
    /// </summary>
    public void RemoveListener(int actionType, HandleModule listener)
    {
        if (!handles.ContainsKey(actionType))
        {
            return;
        }

        HandleModule module = handles[actionType];

        if (module != null)
        {
            foreach (var invokeModule in module.GetInvocationList())
            {
                if (invokeModule.Target.Equals(listener.Target))
                {
                    module -= listener;
                }
            }
        }
    }
Beispiel #4
0
        public SystemBase()
        {
            //自动添加处理委托
            Type methodParameterType = typeof(ActionParameter);
            Type delegateType        = typeof(HandleModule);
            Type type = GetType();

            foreach (var method in type.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly))
            {
                var parameterInfo = method.GetParameters();
                if (parameterInfo.Length == 1 && parameterInfo[0].ParameterType.Equals(methodParameterType))
                {
                    HandleModule handleDelegate = method.CreateDelegate(delegateType, this) as HandleModule;
                    handles.Add(method.Name, handleDelegate);
                }
            }

            //启动更新线程
            Thread updateThread = new Thread(Update);

            updateThread.IsBackground = true;
            updateThread.Start();
        }