제 3 자 API에 대한 연결 풀을 만들고 사용하지 않을 경우 간격이 지나면 연결이 만료됩니다. 만료되면 타사 API를 통해 연결을 끊어야합니다.MemoryCache UpdateCallback이 작동하지 않습니다.
MemoryCache (System.Runtime.Caching)가이를 처리하는 것으로 보입니다. 그러나 UpdateCallback은 이상하게 작동하는 것 같습니다.
간단한 LINQPad 예
: 이것을 실행하면void Main()
{
var cache = MemoryCache.Default;
var policy = new CacheItemPolicy();
policy.AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(1);
policy.UpdateCallback = Update;
cache.Set("figkey", "fig", policy);
Thread.Sleep(2000);
object result = cache.Get("figkey");
Console.WriteLine(result == null ? "null" : result);
}
public static void Update(CacheEntryUpdateArguments arguments)
{
Console.WriteLine("got here");
}
, 출력은 다음과 같습니다
fig
그것은 하지 출력 "여기 있어요"않습니다. 내가 policy.UpdateCallback
로 시작하는 줄을 주석 경우
, 출력은 : 내가 잘못 뭐하는 거지
null
?
내 작업을 수행하는 더 좋은 방법이 있다면, 대안 제안을 할 수 있습니다.
예제가 작동합니다. 나는 "여기에 도착했다"뒤에 "null"을 붙일 수있다 (나는 그것이 무엇을 기대할 것인가이다). 이것은 이상하게 보입니다 - 캐시 만료가 다른 스레드에서 발생할 것이라고 생각했습니다. 감사! – TrueWill