【发布时间】:2018-05-28 09:08:34
【问题描述】:
我正在尝试创建 MemoryCache 类的实例以缓存一些文档信息。问题是,即使我没有遇到任何异常,MemoryCache 实例总是返回“Nothing”。我正在使用以下代码;
构造实例:
Private Shared ObjInfoCache As MemoryCache
Public Sub New()
Dim CacheSettings As NameValueCollection = New NameValueCollection(3)
CacheSettings.Add("CacheMemoryLimitMegabytes", 1024.ToString())
CacheSettings.Add("physicalMemoryLimitPercentage", 50.ToString())
CacheSettings.Add("pollingInterval", TimeSpan.FromMinutes(2).ToString())
ObjInfoCache = New MemoryCache("TestCache", CacheSettings)
End Sub
保存/检索信息的代码(总是跳转到 if 语句):
arrayOfPropValues = ObjInfoCache(docID)
If arrayOfPropValues Is Nothing Then
arrayOfPropValues = GetDocumentInfo(docID, arrayOfPropNames)
ObjInfoCache.Add(docID, arrayOfPropValues, New CacheItemPolicy() With {.AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(60)})
End If
通过测试,我发现使用默认的 MemoryCache 实例ObjInfoCache = MemoryCache.Default 效果很好。但是,它不允许我设置我需要的限制属性。我还尝试创建一个新的 MemoryCache 实例而不添加设置 ObjInfoCache = new MemoryCache("TestCache"),它仍然返回 Nothing。
我正在使用 .NET Framework 4
【问题讨论】:
-
构造函数根本无法返回
Nothing。构造函数创建一个对象,它不能创建一个对象的唯一方法是抛出一个异常。其他事情正在发生。 -
顺便问一下,您知道您可以在配置文件中指定这些限制并让
Default实例从那里使用它们吗? -
@jmcilhinney,是的,我刚刚找到了配置设置:) thx。仍然很好奇为什么它不起作用。刚刚在 C# 中创建了一个新的空项目,它在那里完美地工作。关于退货;我的意思是它在从缓存实例调用变量时返回 Nothing(构造函数只是在那里显示我如何初始化实例)。对不起,如果我对此有点模糊。 Config file as reference for ppl who come here
标签: .net vb.net caching memorycache