estoy usando Cache
en un método de servicio Web como esto:'HttpContext.Current.Cache' con seguridad
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);
}
Pero me pregunto, es el código flujos seguros? El método de servicio web es llamado por múltiples solicitantes. Y más de un solicitante puede intentar recuperar datos y agregarlos al Cache
al mismo tiempo mientras el caché está vacío.
La consulta tarda de 5 a 8 segundos. ¿La introducción de una declaración de bloqueo alrededor de este código evitaría posibles conflictos? (Sé que varias consultas se pueden ejecutar simultáneamente, pero quiero estar seguro de que solo se está ejecutando una consulta a la vez).
No utilizo hilos de fondo, solo son llamadas al servicio web. De paso, gracias. –