我正在研究一些具有缓存层的代码,底层使用MemoryCache类。这是一个c#Windows服务应用程序,因此不是web / IIS。代码的一部分产生了许多线程,在这些线程中它创建并执行POC中的一些代码来执行一些计算。然后将它们存储在上述缓存层中。看到的是,看起来缓存的值似乎是按线程存储而不是在apication级别存储。我认为MemoryCache是一个单独使用的单身人士。
有人可以确认会出现这种情况吗?
非常感谢任何评论。
答案 0 :(得分:3)
MemoryCache
是线程安全的,但没有理由认为它是单例。如果你想让不同的线程访问同一个MemoryCache实例,你需要给它们所有引用同一个实例(作为单例(真的很糟)static
(仍然很糟糕)或通过参数传递作为依赖注入(好) ))。
简单方法(使用全局状态)是访问默认内存缓存:
var cache = MemoryCache.Default; // not really a good idea and harder to test, works
你可以find the specific docs here。请务必configure it in your app/web.config file。