The System.Web.dll assembly contains a very complete caching infrastructure. It's easy to use in web applications, through the Cache property of a Page or a HttpContext. But did you know you can use this infrastructure in Windows applications as well?
Update: As it turns out, the web caching only really works in a stable way within a web application. Further testing proved me wrong. Sorry about that. I removed the code.