2010-05-21 17 views

Respuesta

16

intentar algo como esto:

var enumerator = HttpRuntime.Cache.GetEnumerator(); 
Dictionary<string, object> cacheItems = new Dictionary<string, object>(); 

while (enumerator.MoveNext()) 
    cacheItems.Add(enumerator.Key.ToString(), enumerator.Value); 

foreach (string key in cacheItems.Keys) 
    HttpRuntime.Cache.Remove(key); 
+0

Sí, esto debería funcionar. He usado este enfoque antes. – Pandincus

+1

¿Por qué usar un diccionario para contener los elementos de caché? Solo necesitas sostener las llaves; parecería una lista se encargaría de ello. –

+0

Buen punto. Estaba pensando que tenía que mantener esos datos porque no podría eliminarlos durante un foreach en el enumerador. – Tejs

0

¿qué pasa con la actualización de la memoria caché de caducar?

protected void btnClearCache_Click(object sender, EventArgs e) 
{ 

    var enumerator = HttpRuntime.Cache.GetEnumerator(); 

    while (enumerator.MoveNext()) 
     HttpRuntime.Cache.Insert(enumerator.Key.ToString(), enumerator.Value, 
      null, DateTime.Now , Cache.NoSlidingExpiration); 
} 
Cuestiones relacionadas