ASP.NET 3.5 SP 1 introduce un nuovo overload per il metodo Insert della classe Cache, che serve per la gestire l'omonima funzionalità che si trova nel namespace System.Web.Caching.
Il nuovo metodo Insert funziona in questo modo:
Cache.Insert("key", "value", dependency, expiration, TimeSpan.Zero, MyCacheItemUpdateCallback);
Questo overload consente di inserire un elemento all'interno della cache, associando un callback che è invocato prima che l'elemento venga rimosso dalla stessa, dando la possibilità allo sviluppatore di inserirlo nuovamente.
Questo metodo è pensato per l'inserimento di oggetti in cache la cui generazione risulta molto dispendiosa dal punto di vista delle risorse e durante la rigenerazione dell'oggetto il vecchio valore risulta ancora accessibile, proprio per garantire comunque l'accesso. Inoltre, gli oggetti inseriti in questo modo non sono soggetti alla gestione della rimozione da parte del cache manager, ma vengono rimossi solo allo scadere dell'expire o della dipendenza, quindi il relativo callback non viene invocato in caso di rimozione diretta attraverso i metodi Remove o Insert.
void MyCacheItemUpdateCallback(String key, CacheItemUpdateReason reason, out Object expensiveObject, out CacheDependency dependencies, out DateTime absoluteExpiration, out TimeSpan slidingExpiration) { // impostare a null expensiveObject se non si vuole generare un nuovo elemento expensiveObject = null; }
Il parametro di ritorno expensiveObject va impostato a null se non si vuole generare un nuovo oggetto, altrimenti va impostato sul valore da popolare. E' importante sottolineare che in questo metodo è vivamente sconsigliato modificare l'oggetto in cache utilizzando direttamente le API specifiche, perchè non è stato ancora rimosso e quindi si possono avere collisioni. In caso di eccezioni in questo callback, poichè viene eseguito in un thread separato, l'oggetto viene rimosso dalla cache, poichè ASP.NET non è in grado di popolarlo nuovamente.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Riordinare le righe di una GridView di ASP.NET con jQuery
- Creazione di un alarm con suono personalizzato con Windows Phone 7.1
- Utilizzare la session affinity con Azure Container Apps
- Blue-green deployment con Azure Web App e DevOps
- Ed infine anche il calendario :)
- Configurare la diagnostica di Azure attraverso Visual Studio
- Recuperare la data di creazione di un tag tramite una pipeline YAML di Azure DevOps
- Microsoft Security Bulletin MS05-002
- .NET Core e dispositivi IoT
- Eseguire attività pianificate con Azure Container Jobs