【发布时间】:2010-04-14 14:47:44
【问题描述】:
我在这样的网络服务方法中使用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);
}
但我想知道,这段代码是线程安全的吗? Web 服务方法被多个请求者调用。在缓存为空的同时,不止一个请求者可能会尝试检索数据并添加到Cache。
查询需要 5 到 8 秒。围绕此代码引入锁定语句会防止任何可能的冲突吗? (我知道可以同时运行多个查询,但我想确保一次只运行一个查询。)
【问题讨论】:
标签: c# multithreading caching service thread-safety