Пример #1
0
 public bool Equals(HashableWeakRef <T> aObj)
 {
     if (_weakReference != null)
     {
         return(this.Target.Equals(aObj));
     }
     return(false);
 }
Пример #2
0
        public IEnumerator <KeyValuePair <TKey, TValue> > GetEnumerator()
        {
            if (IsAutoClean)
            {
                Clean();
            }

            foreach (KeyValuePair <object, TValue> entry in _refDict)
            {
                HashableWeakRef <TKey> weakKey = (HashableWeakRef <TKey>)entry.Key;
                yield return(new KeyValuePair <TKey, TValue>(weakKey.Target, entry.Value));
            }
        }
Пример #3
0
        private bool Clean(HashableWeakRef <TKey> aKey)
        {
            bool success = false;

            if (!aKey.IsAlive)
            {
                if (_refDict[aKey] is IDisposable)
                {
                    (_refDict[aKey] as IDisposable).Dispose();
                }
                _refDict.Remove(aKey);
                success = true;
            }

            return(success);
        }
Пример #4
0
        public bool Clean()
        {
            List <HashableWeakRef <TKey> > weakKeyListToRemove = new List <HashableWeakRef <TKey> >();
            bool success = false;

            foreach (KeyValuePair <object, TValue> entry in _refDict)
            {
                HashableWeakRef <TKey> weakKey = (HashableWeakRef <TKey>)entry.Key;
                if (!weakKey.IsAlive)
                {
                    weakKeyListToRemove.Add(weakKey);
                }
            }

            for (int i = 0; i < weakKeyListToRemove.Count; i++)
            {
                Clean(weakKeyListToRemove[i]);
                success = true;
            }

            return(success);
        }
Пример #5
0
        /**********************************************************
         * Public Methods
         *********************************************************/
        public void Add(TKey aKey, TValue aValue)
        {
            HashableWeakRef <TKey> weakKey = new HashableWeakRef <TKey>(aKey);

            _refDict.Add(weakKey, aValue);
        }