Обратные вызовы при кэшировании

: private void Page_Load(object sender,   System. EventArgs e)
{

string cacheKey = "myKey";
string data = "";
// Проверить, если данные в кэше
if(Cache[cacheKey]==null)
{
     // Если кэш пустой, получить данные 
     data = System.DateTime.Now.ToStringO;

    // Создать экземпляр делегата функции обратного вызова
    CacheltemRemovedCallback callBack =
           new CacheItemRemovedCallback(onRemove);

   Labell.Text = "Generated:   " + data;
    Cache.Insert(cacheKey,data, null,
             System.DateTime.Now.AddSeconds(S),
             System.Web.Caching.Cache.NoSlidingExpiration,
             System.Web.Caching.CacheltemPriority.Default,
     callBack);
else {
}
        Labell.Text = "Cached: " + Cache[cacheKey].ToString();

}

}
private void onflemove(string key, object val,
CacheltemRemovedReason reason)
{
           // Создать экземпляр делегата функции обратного вызова
           CacheltemRemovedCallback callBack -
                          new CacheltemRemovedCallback(onfiemove); 
           Cache. Insert (key, val.ToStringO + "»", null,
                          System.DateTime.Now.AddSeconds(S), Cache.NoSlidingExpiration,  
                           System.Web.Caching.CacheltemPriority.Default, callBack);
}