定義一個回呼 (Callback) 方法,以便在快取項目從
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
)
JScript 可以支援使用委派,但不允許宣告新的委派。
參數
- key
從快取中移除的索引鍵。
- value
與快取中移除的索引鍵相關聯的 Object 項目。
- reason
項目從快取移除的理由,如 CacheItemRemovedReason 列舉型別 (Enumeration) 所指定的。
下列程式碼範例將示範一個頁面,為使用者顯示指派給快取項目的值,而且當從快取中移除該項目時,會通知使用者。此頁面會建立 RemovedCallback 方法 (此方法使用 CacheItemRemovedCallback 委派的簽章),以便在移除該快取項目時通知使用者,並使用 CacheItemRemovedReason 列舉型別,告訴使用者移除該項目的原因。此外,此頁面也會使用 Cache.Item 屬性,將物件加入快取中,並擷取那些物件的值。在 AddItemToCache 方法中,會使用 Cache.Add 方法,將項目加入快取中。若要使用 CacheItemRemovedCallback 委派,您必須利用這個方法或 Cache.Insert 方法,將項目加入快取中,好讓 ASP.NET 可以在移除該項目時,自動呼叫適當的方法。自訂的 RemoveItemFromCache 方法會使用 Cache.Remove 方法,明確地從快取中刪除項目,使 RemovedCallback 方法被叫用 (Invoke)。
<%@ 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 2000 SP4、 Windows Server 2003、 Windows XP Media Center Edition、 Windows XP Professional x64 Edition、 Windows XP SP2、 Windows XP Starter Edition
.NET Framework 並不支援各種平台的所有版本。如需支援平台版本的相關資訊,請參閱系統需求一節的內容。
.NET Framework
支援版本:2.0、1.1、1.0