Suppose I have a cache that will expired after one minute.
Cache.Insert("tryin", 0, null, DateTime.Now.AddSeconds(60), Cache.NoSlidingExpiration);
In every 5 second I have a timer to increase the cache velue by 1, but here comes the problem. If I use the following syntax to update the cache’s value,
Cache["tryin"] = Convert.ToInt16(Cache["tryin"]) + 1;
It will overwrite the cache and create a Cache[“tryin”] with NoSlidingExpiration and NoAbsoluteExpiration, but I want that cache to be expired after a minute.
I also tried to use the following syntax,
Cache.Insert("tryin", Convert.ToInt16(Cache["tryin"]) + 1, null, DateTime.Now.AddSeconds(60), Cache.NoSlidingExpiration);
But in this case I will end up creating a cache that will expired after a minute in ever 5 seconds, which make it won’t expired.
So I am looking for a method to update the Cache value without changing the cache Expiration time, Or to get the remaining expiration of the Cache so I can create another one based on the remaining expiration time.
I think the problem here is in cached item being a value type. You can wrap your integer in a class:
then