У меня есть класс CacheHelper для облегчения взаимодействия с кешем. Я хочу использовать статическое поле int, чтобы указать тайм-аут моего кэша. Поле изначально имеет постоянное значение по умолчанию, но я хочу предоставить приложению способ изменить значение тайм-аута по умолчанию.
Нужно ли блокировать при изменении типа статического значения? Нужна ли блокировка в сеттере? Есть ли другие проблемы, которые вы можете увидеть здесь? Извините, я все еще довольно глуп, когда дело доходит до многопоточности.
Спасибо.
public static class CacheHelper
{
private static object _SyncRoot;
private static int _TimeoutInMinutes = CacheDefaults.TimeoutInMinutes;
public static int TimeoutInMinutes
{
get
{
return _TimeoutInMinutes;
}
set
{
lock (_SyncRoot)
{
if (_TimeoutInMinutes != value)
{
_TimeoutInMinutes = value;
}
}
}
}
public static void Insert(string key, Object data)
{
if (HttpContext.Current != null && data != null)
{
HttpContext.Current.Cache.Insert(key, data, null, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(CacheHelper.TimeoutInMinutes));
}
}
}