Freigeben über


CacheItemRemovedCallback Delegat

Definition

Definiert eine Rückrufmethode zur Benachrichtigung einer Anwendung, wenn ein zwischengespeichertes Element aus dem Cache entfernt wird.

public delegate void CacheItemRemovedCallback(System::String ^ key, System::Object ^ value, CacheItemRemovedReason reason);
public delegate void CacheItemRemovedCallback(string key, object value, CacheItemRemovedReason reason);
type CacheItemRemovedCallback = delegate of string * obj * CacheItemRemovedReason -> unit
Public Delegate Sub CacheItemRemovedCallback(key As String, value As Object, reason As CacheItemRemovedReason)

Parameter

key
String

Der Schlüssel, der aus dem Cache entfernt wird.

value
Object

Das Object-Element, das dem aus dem Cache entfernten Schlüssel zugeordnet ist.

reason
CacheItemRemovedReason

Die Ursache für das Entfernen des Elements aus dem Cache, wie in der CacheItemRemovedReason-Enumeration angegeben.

Beispiele

Im folgenden Codebeispiel wird eine Seite veranschaulicht, auf der Benutzern der Wert angezeigt wird, der einem Element im Cache zugewiesen ist und sie dann benachrichtigt, wenn das Element aus dem Cache entfernt wird. Es erstellt eine RemovedCallback Methode, die die Signatur der CacheItemRemovedCallback Stellvertretung verwendet, um Benutzer zu benachrichtigen, wenn das Cacheelement entfernt wird und die CacheItemRemovedReason Enumeration verwendet, um sie zu informieren, warum sie entfernt wurde. Darüber hinaus wird die Cache.Item[] Eigenschaft verwendet, um Objekte zum Cache hinzuzufügen und den Wert dieser Objekte abzurufen. In der AddItemToCache Methode wird die Cache.Add Methode verwendet, um dem Cache ein Element hinzuzufügen. Um die CacheItemRemovedCallback Stellvertretung zu verwenden, müssen Sie dem Cache mit dieser Methode oder der Cache.Insert Methode ein Element hinzufügen, damit ASP.NET automatisch die richtigen Methodenaufrufe vornehmen kann, wenn das Element entfernt wird. Die benutzerdefinierte RemoveItemFromCache Methode verwendet die Cache.Remove Methode, um das Element explizit aus dem Cache zu löschen, wodurch die RemovedCallback Methode aufgerufen wird.

<html>
 <Script runat=server language="C#">
// <snippet2>
    static bool itemRemoved = false;
    static CacheItemRemovedReason reason;
    CacheItemRemovedCallback onRemove = null;

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

// <snippet3>
    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), Cache.NoSlidingExpiration, CacheItemPriority.High, onRemove);
    }
// </snippet3>

// <snippet4>
    public void RemoveItemFromCache(Object sender, EventArgs e) {
        if(Cache["Key1"] != null)
          Cache.Remove("Key1");
    }
// </snippet4>
 </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 {
// <snippet5>
        Response.Write("Value of cache key: <B>" + Server.HtmlEncode(Cache["Key1"] as string) + "</B>");
// </snippet5>
     }
  %>
 </body>
</html>
<%@ Page Language="VB" %>

<html>
 <Script runat=server>
' <snippet2>
    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
' </snippet2>

' <snippet3>
    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), Cache.NoSlidingExpiration, CacheItemPriority.High, onRemove)
        End If
    End Sub
' </snippet3>

' <snippet4>
    Public Sub RemoveItemFromCache(sender As Object, e As EventArgs)
        If (Not IsNothing(Cache("Key1"))) Then
          Cache.Remove("Key1")
        End If
    End Sub
' </snippet4>
 </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
' <snippet5>
    Response.Write("Value of cache key: <B>" + Server.HtmlEncode(CType(Cache("Key1"),String)) + "</B>")
' </snippet5>
End If
%>
 </body>
</html>

Erweiterungsmethoden

GetMethodInfo(Delegate)

Ruft ein Objekt ab, das die Methode darstellt, die vom angegebenen Delegaten dargestellt wird.

Gilt für

Siehe auch