2012-07-24 7 views
3

내 ASP.Net 뒤에 스레드가 있습니다. 이 스레드에서이 같은 캐시에 데이터를 입력 :다른 스레드에서 HttpRuntime.Cache에 액세스

다른 스레드 (웹 페이지) 내가 처음과 같이, 캐시에서 개체를 얻을려고 다음 캐시에 데이터가 포함되어 있는지 확인하고 온
HttpRuntime.Cache.Insert("test", "test", null, DateTime.Today.AddHours(6), Cache.NoSlidingExpiration); 

:

if (HttpRuntime.Cache.Count > 0) { 
      var test = (string)HttpRuntime.Cache["test"]; 
} 

편집 : 캐시가 비어 갈 것이다 var test = (string)HttpRuntime.Cache["test"];을 할 노력하고있어 매번 (또는 개체를 삭제합니다 테스트하지 않은 여러 캐시에서 개체)를 더한 var test도 null입니다. HttpRuntime.Cache.Count 0

오보다 큰 그것은 예외 또는 아무것도 제공하지 않습니다 때 당연히 당신의 코드에서 잠재적 인 일관성이있다

+0

당신이 명확하게 수를 당신은 if 문에서'Cache.Count> 0'을 말하고 있지만 var test = (string) 중에는 HttpRuntime.Cache [ "test"]; 그것은 비 었습니까? –

+0

'var test = (string) HttpRuntime.Cache [ "test"];'캐시를 비울 때 (또는 객체를 삭제하고 테스트하지 않은 채로)'var test '도 null입니다. 'HttpRuntime.Cache.Count'가 0보다 큰 경우 이것은 당연합니다. –

답변

1

DateTime.Today.AddHours (6) 그 것이다 작동하지. 6:00 AM 분명히 httpRuntime을 캐시를 사용할 수없는 후 코드를 실행하는 경우는,

DateTime.Today 현재 하루 12:00 AM을 시작 (6) DateTime.Now.AddHours를 사용해야합니다.