Tôi đang cố tạo một nhóm kết nối với API của bên thứ ba và kết nối sẽ hết hạn sau một khoảng thời gian nếu chúng không được sử dụng. Khi hết hạn, chúng cần được ngắt kết nối qua API của bên thứ ba.MemoryCache UpdateCallback không hoạt động
Có vẻ như MemoryCache (System.Runtime.Caching) sẽ xử lý việc này. UpdateCallback dường như cư xử kỳ quặc, mặc dù.
Một ví dụ đơn giản 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");
}
Nếu tôi chạy này, đầu ra là:
fig
Nó KHÔNG đầu ra "đến đây".
Nếu tôi nhận xét ra các dòng bắt đầu với policy.UpdateCallback
, đầu ra là:
null
Tôi đang làm gì sai?
Nếu có cách nào tốt hơn để hoàn thành nhiệm vụ của tôi, tôi sẽ mở cho các đề xuất thay thế.
Ví dụ của bạn hoạt động. Tôi có thể nhận được "có ở đây" theo sau là "null" (đó là những gì tôi mong đợi). Điều này có vẻ kỳ lạ - tôi nghĩ rằng việc hết hạn bộ nhớ cache sẽ xảy ra trên một chủ đề khác. Cảm ơn! – TrueWill