Utiliser 'HttpContext.Current.Cache' en toute sécurité

Je suis en utilisant Cache dans une méthode de service web comme ceci:

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);
}

Mais je me demande, est-ce code thread-safe? La méthode de service web est appelée par plusieurs demandeurs. Et plus d'un demandeur peuvent tenter de récupérer les données et les ajouter à la Cache dans le même temps, tandis que le cache est vide.

La requête prend 5 à 8 secondes. Serait l'introduction d'une instruction lock autour de ce code de prévenir d'éventuels conflits? (Je sais que plusieurs requêtes peuvent être exécutées simultanément, mais je veux être sûr qu'une seule requête à la fois.)

source d'informationauteur Burak SARICA