ASP.NET には、CacheItemRemovedCallback デリゲートが用意されています。このデリゲートは、アイテムがキャッシュから削除されたときに応答するためのイベント ハンドラを作成する場合に使用するシグネチャを定義します。ASP.NET には、アイテムが削除されることによって、イベント ハンドラが使用できるようにする、CacheItemRemovedReason 列挙型も用意されています。
キャッシュからアイテムが削除されたときにアプリケーションに通知するには
CacheItemRemovedCallback デリゲートに対するイベントを発生させるローカル変数を作成します。
CacheItemRemovedCallback
型のローカル変数であるonRemove
を作成するコード例を次に示します。private static CacheItemRemovedCallback onRemove = null;
メモ この変数を手順 4. の Cache.Add メソッドまたは Cache.Insert メソッドの onRemoveCallback パラメータで使用する場合は、この型にする必要があります。
アイテムがキャッシュから削除されたときに応答するイベント ハンドラを作成します。静的なブール型の
itemRemoved
を true に設定し、静的な CacheItemRemovedReason 型のreason
をアイテムがキャッシュから削除されたときに渡される値に設定するコード例を次に示します。メモ この手順では、CacheItemRemovedReason 列挙型のメンバを使用して、メソッドの条件付きコードを任意に組み込むことができます。
CacheItemRemovedReason reason; public void RemovedCallback(string key, object value, CacheItemRemovedReason callbackreason) { reason = r; } [Visual Basic] Dim reason As CacheItemRemovedReason Public Sub RemovedCallback(key As String, value As Object, reason As CacheItemRemovedReason) reason = r End Sub
メモ このイベント ハンドラは、CacheItemRemovedCallback デリゲートと同じシグネチャを使用する必要があります。このコードでは、ブール型の
itemRemoved
と CacheItemRemovedReason 型のreason
という 2 つの静的変数が作成されていることを想定しています。イベント ハンドラを呼び出す CacheItemRemovedCallback デリゲートのインスタンスを作成します。手順 2. で作成したメソッドを呼び出すコードを次に示します。
onRemove = new CacheItemRemovedCallback(this.RemovedCallback);
Cache.Add メソッドまたは Cache.Insert メソッドを使用して、アイテムを Cache に追加します。onRemoveCallback パラメータに、手順 1. で作成したローカル変数を指定する必要があります。Insert メソッドを使用して、
"MyData1"
というキーとSource
の値を持つキャッシュにアイテムを追加するコードを次に示します。このコードでは、onRemoveCallback パラメータでonRemove
変数を定義しています。Cache.Insert("MyData1", Source, null, DateTime.Now.AddMinutes(2), NoSlidingExpiration, CacheItemPriority.High, onRemove);
手順 4. で追加したアイテムがなんらかの理由で Cache から削除されると、
RemovedCallback
メソッドが呼び出され、その中のコードにアクセスすることで、新しいコンテンツを要求元のクライアントに表示したり、目的に合わせて選択した方法でアプリケーションに通知したりできます。実際に完全に動作する例については、CacheItemRemovedCallback デリゲートのドキュメントを参照してください。
参照
アプリケーション データのキャッシュ | キャッシュへのアイテムの追加 | キャッシュされたアイテムの値の取得 | キャッシュからのアイテムの削除