ASP.NET 缓存,十九--从缓存中删除项时通知应用程序

ASP.NET 提供 CacheItemRemovedCallback 委托。它定义编写事件处理程序时使用的签名,当从缓存中删除项时,该事件处理程序将进行响应。ASP.NET 还提供 CacheItemRemovedReason 枚举,您可以使用该枚举使事件处理程序依赖于删除该项的原因。

当从缓存中删除某项时通知应用程序

  1. 创建引发 CacheItemRemovedCallback 委托的事件的局部变量。例如,下面的代码创建类型为 CacheItemRemovedCallbackonRemove 局部变量。
    private static CacheItemRemovedCallback onRemove = null;
    注意 该变量必须为此类型,以便用于第四步中 Cache.AddCache.Insert 方法的 onRemoveCallback 参数。
  2. 创建一个当从缓存中移除该项时进行响应的事件处理程序。例如,下面的代码将静态 BooleanitemRemoved 设置为 true,将静态 CacheItemRemovedReasonreason 设置为当从缓存中移除该项时传递的值。
    注意 使用 CacheItemRemovedReason 枚举的成员为此步骤中的方法创建条件代码是您可以选择的一种方法。
    [C#]
        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 委托相同的签名。此代码假设您已创建了两个静态变量:类型为 BooleanitemRemoved 和类型为 CacheItemRemovedReasonreason
  3. 创建调用事件处理程序的 CacheItemRemovedCallback 委托的实例。下面的代码调用第二步中创建的方法。
    onRemove = new CacheItemRemovedCallback(this.RemovedCallback);
  4. 使用 Cache.Add 方法或 Cache.Insert 方法将项添加到 Cache 中。您必须在 onRemoveCallback 参数中指定第一步中创建的局部变量。下面的代码使用 Insert 方法将项添加的缓存中,该项的键为 "MyData1",值为 Source。它在 onRemoveCallback 参数中定义 onRemove 变量。
    Cache.Insert("MyData1", Source, null, DateTime.Now.AddMinutes(2), NoSlidingExpiration, CacheItemPriority.High, onRemove);

    当第四步中添加的项由于任何原因从 Cache 中移除时,将调用 RemovedCallback 方法,并且可以访问它其中的代码以将新内容呈现到请求客户端或以一种您选择的适当方式通知应用程序。

    有关完整的工作示例,请参见 CacheItemRemovedCallback 委托的文档。