ich Cache
in einer Web-Service-Methode wie folgt bin mit:Mit 'HttpContext.Current.Cache' sicher
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 Web-Service-Methode wird von mehreren Anforderern aufgerufen. Und mehr als ein Anforderer kann versuchen, Daten abzurufen und zur Cache
zur gleichen Zeit hinzuzufügen, 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, aber ich möchte sicherstellen, dass immer nur eine Abfrage ausgeführt wird.)
Ich verwende keine Hintergrund-Threads, es sind nur Web-Service-Anrufe. Übrigens, danke. –