// private members
private void AddToCache(MemoryCacheEntry entry)
{
// add outside of lock
if (entry != null)
{
if (entry.HasExpiration())
{
_expires.Add(entry);
}
if (entry.HasUsage() &&
(!entry.HasExpiration() || entry.UtcAbsExp - DateTime.UtcNow >= CacheUsage.MIN_LIFETIME_FOR_USAGE))
{
_usage.Add(entry);
}
entry.State = EntryState.AddedToCache;
entry.CallNotifyOnChanged();
if (_perfCounters != null)
{
_perfCounters.Increment(PerfCounterName.Entries);
_perfCounters.Increment(PerfCounterName.Turnover);
}
}
}