我们正在使用Asp.Net Cache,将cache属性放在我们想要缓存的WCF方法上,因此我们无法控制缓存代码。
如果一个人拥有一个空的缓存,并获得10个相同类型的呼叫,那么第一个呼叫需要很长时间才能在第二个呼叫到达之前更新缓存,第二个呼叫会尝试执行相同的操作那么直到第一次调用更新了缓存?
我们在使用ASP.Net缓存的WCF遇到这种情况,并希望第二次调用等到第一次调用更新缓存。有办法吗?
亲切的问候
答案 0 :(得分:0)
您可以使用lock statement阻止多个线程并发执行一段代码,如:
static object lockKey = new object();
..
if(isInCache)
{
return cachedValue;
}
else
{
lock(lockKey)
{
//Code that updates cache
}
}