1

キャッシュするWCFメソッドにキャッシュ属性を設定することにより、Asp.Net Cacheを使用しているため、キャッシュコードを制御できません。

空のキャッシュがあり、同じ種類の呼び出しを 10 回取得した場合、最初の呼び出しに時間がかかりすぎて、2 番目の呼び出しが到着する前にキャッシュを更新していない場合、2 番目の呼び出しは同じことを試みます。最初の呼び出しでキャッシュが更新されましたか?

ASP.Net キャッシュを使用する WCF でこのシナリオを経験しており、最初の呼び出しでキャッシュが更新されるまで 2 番目の呼び出しを待機させたいと考えています。方法はありますか?

敬具

4

1 に答える 1

0

次のように、 lock ステートメントを使用して、複数のスレッドによるコードの同時実行をブロックできます。

    static object lockKey = new object();
    ..
    if(isInCache)
    {
     return cachedValue;
    }
    else
    {
     lock(lockKey)
     {
      //Code that updates cache
     }
    }
于 2013-04-24T13:51:26.433 に答える