2011-01-27 13 views
2

キャッシュアイテムが期限切れになるたびに発生するイベントがあるかどうか、またはキャッシュアイテムが期限切れになったときに発生するイベントがあるかどうかを知りたいと思います。ライブラリをasp.netでキャッシュしています。キャッシュが機能を呼び出すか、イベントを呼び出すのではなく、キャッシュが期限切れになるときにデータベースにデータを保存したいのですが、私は既に管理されているキャッシュライブラリのイベントを使用していますキャッシュ項目をフラッシュまたは廃棄する。キャッシュ有効期限イベントasp.netエンタープライズライブラリ

答えて

2

キャッシングアプリケーションブロックを使用していると仮定して、アイテムをキャッシュに追加するときにコールバックデリゲートを指定します。キャッシュから項目の除去の通知を受け

はあなたがICacheItemRefreshActionを実装するクラスを提供する必要がありAddメソッド

への呼び出しにICacheItemRefreshActionを実装するクラスを指定する必要があります:

[Serializable] 
public class ProductCacheRefreshAction : ICacheItemRefreshAction 
{ 
    public void Refresh(string key, object expiredValue, CacheItemRemovedReason removalReason) 
    { 
    // Item has been removed from cache. Perform desired actions here, based on 
    // the removal reason (for example, refresh the cache with the item). 
    } 
} 

ご覧のとおり、アイテムが削除されると、このRefresh()メソッドが、のキーで呼び出され、修正されているオブジェクトが呼び出されますoved。 expiredObjectパラメーターを正しいタイプにキャストし、それをデータベースに保管するように調整するだけです。

ここに文書化されたよう:http://msdn.microsoft.com/en-us/library/ff664621(v=PandP.50).aspx

+0

は、このだけでなく、私に古いキャッシュオブジェクトを与えるだろうか?キャッシュされたアイテムが期限切れになった後に古いキャッシュデータを保存することです。 – Nikshep

+0

はい。私は説明するために私の答えを更新しました。 –

+0

もう一つの簡単な質問は、内部的にリフレッシュ機能がマルチスレッド化に作用するのでしょうか? – Nikshep

関連する問題