일부 문서 정보를 캐시하기 위해 MemoryCache 클래스의 인스턴스를 만들려고합니다. 문제는 내가 예외를 얻지는 않지만 MemoryCache 인스턴스는 항상 'Nothing'을 반환한다는 것입니다. 다음 코드를 사용하고 있습니다.MemoryCache의 vb.net 인스턴스는 항상 캐시에서 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
은 완벽하게 작동합니다. 그러나 그것은 제가 필요로하는 한계 속성을 설정하게하지 않습니다. 나는 또한 Nothing을 반환하는 설정 ObjInfoCache = new MemoryCache("TestCache")
을 추가하지 않고 새 MemoryCache 인스턴스를 만들려고했습니다.
나는 .NET 프레임 워크 반환 약 4
생성자는 단순히 Nothing을 반환 할 수 없습니다. 생성자가 객체를 만들고 객체를 만들 수없는 유일한 방법은 예외를 throw하는 것입니다. 다른 일이 벌어지고있다. – jmcilhinney
그런데, 당신은 config 파일에서 그 한계를 지정할 수 있고'Default' 인스턴스가 거기에서 그것을 사용할 수 있다는 것을 알고 있습니까? – jmcilhinney
@jmcilhinney, 네, 방금 구성 설정을 찾았습니다 :) thx. 아직도 호기심이 있지만 왜 작동하지 않습니다. C#에서 새로운 빈 프로젝트를 만들었고 완벽하게 작동합니다. 반환에 관하여; 캐시 인스턴스에서 변수를 호출 할 때 아무 것도 리턴하지 않는다는 것을 의미했습니다 (생성자는 인스턴스를 초기화하는 방법을 보여 주기만했습니다). 죄송합니다. 조금은 모호한 점이 있습니다. [여기에 오는 ppl에 대한 참조 파일로 설정] (https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/memorycache-element-cache-settings) – STDMP