diff --git a/src/Orchard/Caching/ICacheManager.cs b/src/Orchard/Caching/ICacheManager.cs index 785d34f0c..793b29a46 100644 --- a/src/Orchard/Caching/ICacheManager.cs +++ b/src/Orchard/Caching/ICacheManager.cs @@ -7,11 +7,11 @@ namespace Orchard.Caching { } public static class CacheManagerExtensions { - public static TResult Get(this ICacheManager cacheManager, TKey key, bool lazy, Func, TResult> acquire) { - // Wrap the call in a Lazy initializer to prevent multiple processes from - // executing the same lambda in parallel. - if (lazy) { - return cacheManager.Get>(key, k => new Lazy(() => acquire(k))).Value; + public static TResult Get(this ICacheManager cacheManager, TKey key, bool preventConcurrentCalls, Func, TResult> acquire) { + if (preventConcurrentCalls) { + lock(key) { + return cacheManager.Get(key, acquire); + } } else { return cacheManager.Get(key, acquire);