Using 'HttpContext.Current.Cache' safe

Ich benutzeCache in einer Webdienstmethode wie dieser:

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

Aber ich frage mich, ist dieser Code thread-sicher? Die Webservice-Methode wird von mehreren Anforderern aufgerufen. Und mehr als ein Anforderer kann versuchen, Daten abzurufen und zum @ hinzuzufügeCache zur gleichen Zeit, während der Cache leer ist.

Die Abfrage dauert 5 bis 8 Sekunden. Würde die Einführung einer Lock-Anweisung um diesen Code mögliche Konflikte verhindern? (Ich weiß, dass mehrere Abfragen gleichzeitig ausgeführt werden können, möchte jedoch sicherstellen, dass immer nur eine Abfrage ausgeführt wird.)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage