Пример #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);
    }