Groups | Blog | Home
all groups > asp.net > march 2007 >

asp.net : Stupid Caching question


Alvin Bruney [MVP]
3/21/2007 8:13:27 PM
You know implicitly that the object is a datatable, you don't need to
*download* it into a type of object and then cast the return type to a
datatable, just use a datatable, it will avoid the conversion hit and make
the code more readable.

Dim cacheItem As Object = TryCast(Cache(key), DataTable)

If cacheItem Is Nothing Then

cacheItem = GetData()

Cache.Insert(key, cacheItem, Nothing, DateTime.Now.AddHours(1),
TimeSpan.Zero)

End If

Return CType(cacheItem, DataTable)


--
Regards,
Alvin Bruney
------------------------------------------------------
Shameless author plug
Excel Services for .NET is coming...
OWC Black book on Amazon and
www.lulu.com/owc
Professional VSTO 2005 - Wrox/Wiley


[quoted text, click to view]

Chris
3/21/2007 10:31:33 PM
I periodically, once every week or so, get an error when trying to read an
XML doc stored in cache. I get an 'object not set to a reference' I have a
gut feeling it happens when the app is under strain and the moment between
testing the cache and returning the cached xml doc it expires. I have read
several other people have the same problem. I have seen some C# code which
theoretically makes sense to me, but I don't understand the syntax and how
you would write it in VB.net. And I thought I had got me head round
"converting" C# ....... Can anyone explain it. I have tried:

Dim cacheitem as object = Cache(key) as XMLDocument

but with no luck. Here is the C# code in full.


Object cacheItem = Cache[key] as DataTable;
if(cacheItem == null)
{
cacheItem = GetData();
Cache.Insert(key, cacheItem, null, DateTime.Now.AddHours(1),
TimeSpan.Zero);
}
return (DataTable)cacheItem;

Regards, Chris.

AddThis Social Bookmark Button