Ejemplo n.º 1
0
        private void SendInner(Type senderType, Type argsType, string messsage, object sender, object args)
        {
            MessageExpressItem key = new MessageExpressItem(senderType, argsType, messsage);

            if (_dictCallback.ContainsKey(key))
            {
                List <Tuple <WeakReference, Action <object, object> > > list = _dictCallback[key];
                foreach (Tuple <WeakReference, Action <object, object> > item in list)
                {
                    if (item.Item1.IsAlive)
                    {
                        item.Item2(sender, args);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private void RegisterInner(Type senderType, Type argsType, string messsage, object subcriber, Action <object, object> callback)
        {
            MessageExpressItem key = new MessageExpressItem(senderType, argsType, messsage);
            Tuple <WeakReference, Action <object, object> > value = new Tuple <WeakReference, Action <object, object> >(new WeakReference(subcriber), callback);

            if (_dictCallback.ContainsKey(key))
            {
                _dictCallback[key].Add(value);
            }
            else
            {
                List <Tuple <WeakReference, Action <object, object> > > list = new List <Tuple <WeakReference, Action <object, object> > >
                {
                    value
                };
                _dictCallback[key] = list;
            }
        }
Ejemplo n.º 3
0
        private void UnRegisterInner(Type senderType, Type argsType, string messsage, object subcriber)
        {
            MessageExpressItem key = new MessageExpressItem(senderType, argsType, messsage);

            if (_dictCallback.ContainsKey(key))
            {
                _ = _dictCallback[key].RemoveAll((match) =>
                {
                    if (match.Item1.IsAlive)
                    {
                        return(match.Item1.Target == subcriber);
                    }
                    return(true);
                });
            }
            List <Tuple <WeakReference, Action <object, object> > > list = _dictCallback[key];

            if (list.Count > 0)
            {
                _ = _dictCallback.Remove(key);
            }
        }