MemoryCache over Threads

时间:2015-04-26 11:17:40

标签: c# multithreading service memorycache

我正在研究一些具有缓存层的代码,底层使用MemoryCache类。这是一个c#Windows服务应用程序,因此不是web / IIS。代码的一部分产生了许多线程,在这些线程中它创建并执行POC中的一些代码来执行一些计算。然后将它们存储在上述缓存层中。看到的是,看起来缓存的值似乎是按线程存储而不是在apication级别存储。我认为MemoryCache是​​一个单独使用的单身人士。

有人可以确认会出现这种情况吗?

非常感谢任何评论。

1 个答案:

答案 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