Я использую Cache
в методе веб-службы, подобном этому:
var pblDataList = (List<blabla>)HttpContext.Current.Cache.Get("pblDataList");
if (pblDataList == null)
{
var PBLData = dc.ExecuteQuery<blabla>(@"SELECT blabla");
pblDataList = PBLData.ToList();
HttpContext.Current.Cache.Add("pblDataList", pblDataList, null,
DateTime.Now.Add(new TimeSpan(0, 0, 15)),
Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
}
Но интересно, этот код безопасен? Метод веб-службы вызывается несколькими пользователями. И еще один запросчик может попытаться извлечь данные и добавить к Cache
одновременно, пока кеш пуст.
Запрос занимает от 5 до 8 секунд. Внедрил бы инструкцию блокировки вокруг этого кода, чтобы предотвратить любые возможные конфликты? (Я знаю, что несколько запросов могут выполняться одновременно, но я хочу быть уверенным, что за один раз запускается только один запрос.)