Как правильно удалить объекты с истекшим сроком действия в MemoryCache (возможно, они все еще используются)?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как правильно удалить объекты с истекшим сроком действия в MemoryCache (возможно, они все еще используются)?

Сообщение Anonymous »

Я понимаю, что элементы в MemoryCache не удаляются по истечении срока их действия. Я кэширую некоторый X509Certificate2, который, согласно документации, должен быть удален после завершения.
Однако мой наивный подход приведет к удалению объекта, когда объект все еще может использоваться некоторыми потоки (см. код ниже).
Как правильно обработать этот случай? Я думаю, мне может понадобиться счетчик ссылок или что-то подобное?
await cache.GetOrCreateAsync("IdTokenCerts", async entry =>
{
entry.AbsoluteExpirationRelativeToNow = JwtCertsCacheLifetime;
entry.RegisterPostEvictionCallback((_, value, _, _) =>
{
if (value is IEnumerable keys)
{
foreach (var key in keys)
{
if (key is X509SecurityKey x509Key)
{
x509Key.Certificate.Dispose();
}
}
}
});

// ...
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... -be-in-use
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»