Мой вариант использования — приложение ASP.NET Core, которое использует IMemoryCache для кэшировать некоторые данные. Теперь, когда данные недоступны (например, кэш удален), мне приходится заново их заполнять, и это должно быть защищено блокировкой.
Код: Выделить всё
public TItem Get(object key, Func factory)
{
if (!_memoryCache.TryGetValue(key, out TItem value))
{
lock (_locker)
{
if (!_memoryCache.TryGetValue(key, out value))
{
value = factory();
Set(key, value);
}
}
}
return value;
}
Подробнее здесь: https://stackoverflow.com/questions/442 ... th-locking
Мобильная версия