Intento crear un conjunto de conexiones a una API de terceros y las conexiones caducan después de un intervalo si no están en uso. Cuando caducan, deben desconectarse a través de la API de terceros.MemoryCache UpdateCallback no funciona
Parece que MemoryCache (System.Runtime.Caching) se encargará de esto. UpdateCallback parece comportarse de manera extraña, sin embargo.
Un ejemplo sencillo LINQPad:
void Main()
{
var cache = MemoryCache.Default;
var policy = new CacheItemPolicy();
policy.AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(1);
policy.UpdateCallback = Update;
cache.Set("figkey", "fig", policy);
Thread.Sleep(2000);
object result = cache.Get("figkey");
Console.WriteLine(result == null ? "null" : result);
}
public static void Update(CacheEntryUpdateArguments arguments)
{
Console.WriteLine("got here");
}
Si funciono esto, la salida es:
fig
lo hace NO salida "tiene aquí".
Si comento hacia fuera la línea que comienza con policy.UpdateCallback
, la salida es:
null
¿Qué estoy haciendo mal?
Si hay una mejor manera de llevar a cabo mi tarea, estoy abierto a sugerencias alternativas.
Su ejemplo funciona. Puedo obtener "get here" seguido de "null" (que es lo que esperaría). Esto parece extraño: pensé que la caducidad del caché ocurriría en otro hilo. ¡Gracias! – TrueWill