使用Asp.Net Cache,对第一次调用等待空缓存的调用队列是否更新了缓存?

时间:2013-04-24 13:43:32

标签: asp.net caching

我们正在使用Asp.Net Cache,将cache属性放在我们想要缓存的WCF方法上,因此我们无法控制缓存代码。

如果一个人拥有一个空的缓存,并获得10个相同类型的呼叫,那么第一个呼叫需要很长时间才能在第二个呼叫到达之前更新缓存,第二个呼叫会尝试执行相同的操作那么直到第一次调用更新了缓存?

我们在使用ASP.Net缓存的WCF遇到这种情况,并希望第二次调用等到第一次调用更新缓存。有办法吗?

亲切的问候

1 个答案:

答案 0 :(得分:0)

您可以使用lock statement阻止多个线程并发执行一段代码,如:

    static object lockKey = new object();
    ..
    if(isInCache)
    {
     return cachedValue;
    }
    else
    {
     lock(lockKey)
     {
      //Code that updates cache
     }
    }