次の方法で共有


CacheItemRemovedCallback デリゲート

キャッシュされた項目が Cache から削除されたときに、アプリケーションに通知するコールバック メソッドを定義します。

名前空間: System.Web.Caching
アセンブリ: System.Web (system.web.dll 内)

構文

'宣言
Public Delegate Sub CacheItemRemovedCallback ( _
    key As String, _
    value As Object, _
    reason As CacheItemRemovedReason _
)
'使用
Dim instance As New CacheItemRemovedCallback(AddressOf HandlerMethod)
public delegate void CacheItemRemovedCallback (
    string key,
    Object value,
    CacheItemRemovedReason reason
)
public delegate void CacheItemRemovedCallback (
    String^ key, 
    Object^ value, 
    CacheItemRemovedReason reason
)
/** @delegate */
public delegate void CacheItemRemovedCallback (
    String key, 
    Object value, 
    CacheItemRemovedReason reason
)
適用できません。

パラメータ

  • key
    キャッシュから削除されたキー。
  • value
    キャッシュから削除されたキーに関連付けられた Object 項目。
  • reason
    CacheItemRemovedReason 列挙体によって指定された、キャッシュから項目が削除された理由。

使用例

キャッシュ内の項目に割り当てられた値をユーザーに表示し、項目がキャッシュから削除されたときにユーザーに通知するページのコード例を次に示します。このコード例では、CacheItemRemovedCallback デリゲートのシグネチャを使用した RemovedCallback メソッドを作成して、キャッシュ項目が削除されたときにユーザーに通知し、CacheItemRemovedReason 列挙体を使用して、ユーザーに削除の理由を通知します。さらに、Cache.Item プロパティを使用して、オブジェクトをキャッシュに追加し、それらのオブジェクトの値を取得します。AddItemToCache メソッドでは、Cache.Add メソッドを使用して、項目をキャッシュに追加します。CacheItemRemovedCallback デリゲートを使用するには、このメソッドまたは Cache.Insert メソッドを使用して項目をキャッシュに追加し、項目が削除されたときに、ASP.NET が適切なメソッドを自動的に呼び出すことができるようにする必要があります。カスタム RemoveItemFromCache メソッドは、Cache.Remove メソッドを使用して、項目を明示的にキャッシュから削除します。その結果、RemovedCallback メソッドが呼び出されます。

<%@ Page Language="VB" %>

<html>
 <Script runat=server>
    Shared itemRemoved As boolean = false
    Shared reason As CacheItemRemovedReason
    Dim onRemove As CacheItemRemovedCallback

    Public Sub RemovedCallback(k As String, v As Object, r As CacheItemRemovedReason)
      itemRemoved = true
      reason = r
    End Sub

    Public Sub AddItemToCache(sender As Object, e As EventArgs)
        itemRemoved = false

        onRemove = New CacheItemRemovedCallback(AddressOf Me.RemovedCallback)

        If (IsNothing(Cache("Key1"))) Then
          Cache.Add("Key1", "Value 1", Nothing, DateTime.Now.AddSeconds(60), TimeSpan.Zero, CacheItemPriority.High, onRemove)
        End If
    End Sub

    Public Sub RemoveItemFromCache(sender As Object, e As EventArgs)
        If (Not IsNothing(Cache("Key1"))) Then
          Cache.Remove("Key1")
        End If
    End Sub
 </Script>

 <body>
  <Form runat="server">
    <input type=submit OnServerClick="AddItemToCache" value="Add Item To Cache" runat="server"/>
    <input type=submit OnServerClick="RemoveItemFromCache" value="Remove Item From Cache" runat="server"/>
  </Form>
<%
If (itemRemoved) Then
    Response.Write("RemovedCallback event raised.")
    Response.Write("<BR>")
    Response.Write("Reason: <B>" + reason.ToString() + "</B>")
Else
    Response.Write("Value of cache key: <B>" + Server.HtmlEncode(CType(Cache("Key1"),String)) + "</B>")
End If
%>
 </body>
</html>
<html>
 <Script runat=server language="C#">
    static bool itemRemoved = false;
    static CacheItemRemovedReason reason;
    CacheItemRemovedCallback onRemove = null;

    public void RemovedCallback(String k, Object v, CacheItemRemovedReason r){
      itemRemoved = true;
      reason = r;
    }

    public void AddItemToCache(Object sender, EventArgs e) {
        itemRemoved = false;

        onRemove = new CacheItemRemovedCallback(this.RemovedCallback);

        if (Cache["Key1"] == null)
          Cache.Add("Key1", "Value 1", null, DateTime.Now.AddSeconds(60), TimeSpan.Zero, CacheItemPriority.High, onRemove);
    }

    public void RemoveItemFromCache(Object sender, EventArgs e) {
        if(Cache["Key1"] != null)
          Cache.Remove("Key1");
    }
 </Script>
 <body>
  <Form runat="server">
   <input type=submit OnServerClick="AddItemToCache" value="Add Item To Cache" runat="server"/>
   <input type=submit OnServerClick="RemoveItemFromCache" value="Remove Item From Cache" runat="server"/>
  </Form>
  <% if (itemRemoved) {
        Response.Write("RemovedCallback event raised.");
        Response.Write("<BR>");
        Response.Write("Reason: <B>" + reason.ToString() + "</B>");
     }
     else {
        Response.Write("Value of cache key: <B>" + Server.HtmlEncode(Cache["Key1"] as string) + "</B>");
     }
  %>
 </body>
</html>
<html>
 <Script runat=server language="JScript">

    static var itemRemoved : boolean = false;
    static var reason : CacheItemRemovedReason;
    var onRemove : CacheItemRemovedCallback = null;

    public function RemovedCallback(k : String, v : Object, r : CacheItemRemovedReason){
      itemRemoved = true;
      reason = r;
    }

    public function AddItemToCache(sender : Object, e : EventArgs) {
        itemRemoved = false;

        onRemove = this.RemovedCallback;

        if (Cache["Key1"] == null)
          Cache.Add("Key1", "Value 1", null, DateTime.Now.AddSeconds(10), TimeSpan.Zero, CacheItemPriority.High, onRemove);
    }

    public function RemoveItemFromCache(sender : Object, e : EventArgs) {
        if(Cache["Key1"] != null)
          Cache.Remove("Key1");
    }
 </Script>

 <body>
  <Form runat="server">
    <input type=submit OnServerClick="AddItemToCache" value="Add Item To Cache" runat="server"/>
    <input type=submit OnServerClick="RemoveItemFromCache" value="Remove Item From Cache" runat="server"/>
  </Form>
<%
if (itemRemoved) {
    Response.Write("RemovedCallback event raised.");
    Response.Write("<BR>");
    Response.Write("Reason: <B>" + reason + "</B>");
}
else {
    Response.Write("Value of cache key: <B>" + Server.HtmlEncode(Cache["Key1"].ToString()) + "</B>");
}
%>

 </body>
</html>

プラットフォーム

Windows 98,Windows Server 2000 SP4,Windows CE,Windows Millennium Edition,Windows Mobile for Pocket PC,Windows Mobile for Smartphone,Windows Server 2003,Windows XP Media Center Edition,Windows XP Professional x64 Edition,Windows XP SP2,Windows XP Starter Edition

Microsoft .NET Framework 3.0 は Windows Vista,Microsoft Windows XP SP2,および Windows Server 2003 SP1 でサポートされています。

バージョン情報

.NET Framework

サポート対象 : 3.0,2.0,1.1,1.0

参照

関連項目

System.Web.Caching 名前空間
Cache
CacheItemRemovedReason