1

私は何も見つけられなかったので、私が望むことが可能であるとは信じていません。キャッシュ変数にアクセスするたびに、キャッシュ変数のスライド有効期限をリセットしたいと思います。

public class MyCache
{
public static object CachedItem
{
    get
    {
        string key = "item11"; // users share the object at this key
        object o = Cache[key];

        //re-set the timer janky way
        //triggers callback, which I dont want
        o = (o == null) ? new object() : Cache.Remove(key);
        Cache.Add(key, o, null, Cache.NoAbs..., new TimeSpan(0,5,0), High, Removed);

        return o;
    }
}

private static void Removed(string key, object value, CacheItemRemovedReason reason)
{
    // audit MySql table
    // no good because Cache.Remove is getting called manually a lot.
}
}

実際には、キャッシュアイテムはチャットルーム内のメッセージのリストです。メッセージが追加されたら、チャットルームをもう少し長く「生き続ける」ようにします。別の方法も歓迎します。

4

1 に答える 1

2

設計上、キャッシュオブジェクトは、アクセスされるたびに有効期限を自動的にリセットします。あなたがしなければならないのは、オブジェクトを取得しようとすることです。nullの場合は、現在のようにスライド式の有効期限を設定し、nullでない場合はオブジェクトを返します。取得するだけで、有効期限がリセットされます。そのようです

public static object CachedItem
{
    get
    {
        string key = "item11"; // users share the object at this key
        object o = Cache[key];
        if (o == null)
        {
            o = {Get from some source};
            Cache.Add(key, o, null, Cache.NoAbs..., new TimeSpan(0,5,0), High, Removed);
        }

        return o;
    }
}
于 2011-05-25T21:39:32.097 に答える