静的クラスをキャッシュとして使用する ASP.NET アプリケーションがあります。その静的クラスの内部には、キャッシュされたオブジェクトを保持する内部ディクショナリがあります。もちろん、静的クラスには Add/Remove/Clear などのメソッドがあります... 次のようになります。
public static class CacheManager
{
private static Dictionary<string, object> cacheItems = new Dictionary<string, object>();
private static ReaderWriterLockSlim locker = new ReaderWriterLockSlim();
public static Dictionary<string, object> CacheItems
{
get
{
return cacheItems;
}
}
public static void AddCacheItem(string key, object data)
{
locker.EnterWriteLock();
try
{
cacheItems.Add(key, data);
}
finally
{
locker.ExitWriteLock();
}
}
...
}
ASP.NET アプリケーションの実行時に、項目がキャッシュ (辞書) に追加されました。キーが既にこの方法で追加されている場合、たとえば Add メソッドで確認する必要があるかどうかを尋ねたいだけです。
public static void AddCacheItem(string key, object data)
{
locker.EnterWriteLock();
try
{
if (!cacheItems.ContainsKey(key))
{
cacheItems.Add(key, data);
}
}
finally
{
locker.ExitWriteLock();
}
}
または、最初のコード スニペットのままにしますか?
前もって感謝します。