Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
… и будут висеть.
if (data.TryGetValue(key, out wr))
{
val = (TValue)wr.Target;
if (val != null)
return val;
}
public TValue this[TKey key]
{
get
{
CleanCache();
WeakReference wr;
TValue val;
try
{
rwLock.EnterReadLock();
if (data.TryGetValue(key, out wr))
{
val = (TValue)wr.Target;
if (val != null)
return val;
}
}
finally
{
rwLock.ExitReadLock();
}
try
{
rwLock.EnterWriteLock();
if (data.TryGetValue(key, out wr))
{
val = (TValue)wr.Target;
if (val != null)
return val;
}
data[key] = new WeakReference(val = getter(key));
return val;
}
finally
{
rwLock.ExitWriteLock();
}
}
}
Простой кэш в памяти