Example #1
0
        /// <summary>
        /// 移除已经注册的消息句柄;
        /// </summary>
        /// <param name="varMsgID"></param>
        /// <param name="varFunc"></param>
        protected void UnRegisterMsgHandler(int varMsgID, EventFuntion varFunc)
        {
            if (varFunc == null || mMsgHandlers.Count == 0)
            {
                return;
            }
            List <EventFuntion> tmpFuns;

            if (mMsgHandlers.TryGetValue(varMsgID, out tmpFuns) == false)
            {
                return;
            }

            for (int i = tmpFuns.Count - 1; i >= 0; --i)
            {
                EventFuntion tmpFun = tmpFuns[i];
                if (tmpFun == null || tmpFun.Target == null)
                {
                    mDeleteMsgHandlers.Add(tmpFun);
                    continue;
                }
                if (varFunc != null && tmpFun.Target == varFunc.Target)
                {
                    mDeleteMsgHandlers.Add(tmpFun);
                    return;
                }
            }
        }
Example #2
0
    private List <EventFuntion> RemoveDeleteMsg(List <EventFuntion> varFunList)
    {
        if (mMsgHandlers.Count != 0 && varFunList != null)
        {
            for (int i = 0; i < varFunList.Count;)
            {
                EventFuntion temRem    = varFunList[i];
                bool         tempExist = false;
                for (int j = 0; j < mDeleteMsgHandlers.Count;)
                {
                    if (mDeleteMsgHandlers[j] == temRem)
                    {
                        tempExist = true;
                        mDeleteMsgHandlers.RemoveAt(j);
                        continue;
                    }
                    if (mDeleteMsgHandlers[j] == null || mDeleteMsgHandlers[j].Target == null)
                    {
                        mDeleteMsgHandlers.RemoveAt(j);
                        continue;
                    }
                    j++;
                }

                if (tempExist)
                {
                    varFunList.RemoveAt(i);
                    continue;
                }
                i++;
            }
        }

        return(varFunList);
    }
Example #3
0
    /// <summary>
    /// 移除已经注册的消息句柄
    /// </summary>
    /// <param name="varMsgID"></param>
    /// <param name="varFunc"></param>
    public void UnRegisterMsgHandler(int varMsgID, EventFuntion varFunc)
    {
        List <EventFuntion> tmpFuns = null;

        if (mMsgHandlers.TryGetValue(varMsgID, out tmpFuns))
        {
            if (tmpFuns != null && tmpFuns.Count > 0)
            {
                for (int i = tmpFuns.Count - 1; i >= 0; --i)
                {
                    EventFuntion tmpFun = tmpFuns[i];
                    if (tmpFun == null || tmpFun.Target == null)
                    {
                        mDeleteMsgHandlers.Add(tmpFun);
                        //tmpFuns.Remove(tmpFun);
                        continue;
                    }
                    if (varFunc != null && tmpFun.Target == varFunc.Target)
                    {
                        mDeleteMsgHandlers.Add(tmpFun);
                        //tmpFuns.Remove(tmpFun);
                        return;
                    }
                }
            }
        }
    }
Example #4
0
    /// <summary>
    /// 注册消息句柄
    /// </summary>
    /// <param name="varMsgID"></param>
    /// <param name="varFunc"></param>
    public void RegisterMsgHandler(int varMsgID, EventFuntion varFunc)
    {
        if (varFunc == null)
        {
            return;
        }
        if (mMsgHandlers == null)
        {
            mMsgHandlers = new Dictionary <int, List <EventFuntion> >();
        }
        List <EventFuntion> tmpFuns = null;

        if (mMsgHandlers.TryGetValue((int)varMsgID, out tmpFuns) == false)
        {
            tmpFuns = new List <EventFuntion>();
            mMsgHandlers.Add((int)varMsgID, tmpFuns);
        }
        else
        {
            tmpFuns = RemoveDeleteMsg(tmpFuns);
        }
        for (int i = 0; i < tmpFuns.Count; i++)
        {
            EventFuntion func = tmpFuns[i];
            if (func == varFunc)
            {
                return;
            }
        }
        tmpFuns.Add(varFunc);
    }
Example #5
0
        /// <summary>
        /// 注册消息句柄;
        /// </summary>
        /// <param name="varMsgID"></param>
        /// <param name="varFunc"></param>
        protected void RegisterMsgHandler(int varMsgID, EventFuntion varFunc)
        {
            if (varFunc == null)
            {
                return;
            }

            List <EventFuntion> tmpFuns;

            if (mMsgHandlers.Count == 0 || mMsgHandlers.TryGetValue(varMsgID, out tmpFuns) == false)
            {
                tmpFuns = new List <EventFuntion>();
                mMsgHandlers.Add(varMsgID, tmpFuns);
            }
            else
            {
                if (tmpFuns != null)
                {
                    for (int i = 0; i < mDeleteMsgHandlers.Count; i++)
                    {
                        EventFuntion temRem = mDeleteMsgHandlers[i];
                        if (tmpFuns.Contains(temRem) == true)
                        {
                            tmpFuns.Remove(temRem);
                            mDeleteMsgHandlers.RemoveAt(i);
                            i--;
                        }
                    }
                }
            }
            for (int i = 0; i < tmpFuns.Count; i++)
            {
                EventFuntion func = tmpFuns[i];
                if (func == varFunc)
                {
                    return;
                }
            }
            tmpFuns.Add(varFunc);
        }
Example #6
0
        /// <summary>
        /// 事件广播;
        /// </summary>
        /// <param name="varMsgID"></param>
        /// <param name="varEvent"></param>
        protected void NotifyEvent(int varMsgID, BaseEvent varEvent)
        {
            List <EventFuntion> tmpFuncs;

            if (mMsgHandlers.Count == 0 || mMsgHandlers.TryGetValue(varMsgID, out tmpFuncs) == false)
            {
                return;
            }
            if (tmpFuncs == null)
            {
                return;
            }

            for (int i = 0; i < mDeleteMsgHandlers.Count; i++)
            {
                EventFuntion temRem = mDeleteMsgHandlers[i];
                if (tmpFuncs.Contains(temRem) == true)
                {
                    tmpFuncs.Remove(temRem);
                    mDeleteMsgHandlers.RemoveAt(i);
                    i--;
                }
            }
            if (tmpFuncs.Count > 0)
            {
                for (int i = 0; i < tmpFuncs.Count; i++)
                {
                    EventFuntion tmpFunc = tmpFuncs[i];
                    if (tmpFunc == null || tmpFunc.Target == null)
                    {
                        mDeleteMsgHandlers.Add(tmpFunc);
                    }
                    else
                    {
                        tmpFunc(varEvent);
                    }
                }
            }
        }
Example #7
0
    /// <summary>
    /// 事件广播
    /// </summary>
    /// <param name="varMsgID"></param>
    /// <param name="varEvent"></param>
    public void NotifyEvent(int varMsgID, BaseEvent varEvent)
    {
        List <EventFuntion> tmpFuncs = null;

        if (mMsgHandlers.TryGetValue(varMsgID, out tmpFuncs))
        {
            tmpFuncs = RemoveDeleteMsg(tmpFuncs);
            if (tmpFuncs != null && tmpFuncs.Count > 0)
            {
                for (int i = 0; i < tmpFuncs.Count; i++)
                {
                    EventFuntion tmpFunc = tmpFuncs[i];
                    if (tmpFunc == null || tmpFunc.Target == null)
                    {
                        mDeleteMsgHandlers.Add(tmpFunc);
                    }
                    else
                    {
                        tmpFunc(varEvent);
                    }
                }
            }
        }
    }