internal void PropagateOptions(CacheEntry parent)
        {
            if (parent == null)
            {
                return;
            }

            // Copy expiration tokens and AbsoluteExpiration to the cache entries hierarchy.
            // We do this regardless of it gets cached because the tokens are associated with the value we'll return.
            if (_expirationTokens != null)
            {
                lock (_lock)
                {
                    lock (parent._lock)
                    {
                        foreach (var expirationToken in _expirationTokens)
                        {
                            parent.AddExpirationToken(expirationToken);
                        }
                    }
                }
            }

            if (_absoluteExpiration.HasValue)
            {
                if (!parent._absoluteExpiration.HasValue || _absoluteExpiration < parent._absoluteExpiration)
                {
                    parent._absoluteExpiration = _absoluteExpiration;
                }
            }
        }
Esempio n. 2
0
 internal void PropagateTokens(CacheEntry parentEntry)
 {
     if (_expirationTokens != null)
     {
         lock (this)
         {
             lock (parentEntry.GetOrCreateTokens())
             {
                 foreach (IChangeToken expirationToken in _expirationTokens)
                 {
                     parentEntry.AddExpirationToken(expirationToken);
                 }
             }
         }
     }
 }