如何解决内存缓存未过期
使用 .NET 5.0 和 ASP.net,我正在尝试 (ab) 使用 MemoryCache 定期运行服务。 为了测试,我编写了以下代码
using Microsoft.Extensions.Caching.Memory;
[...]
public sealed class MyService : IMyService
{
private readonly IMemoryCache _cache;
public MyService(IMemoryCache cache)
{
_cache = cache;
SetTimer();
}
private void SetTimer()
{
_cache.Set(nameof(MyService),$"Starts every 30 seconds.",new MemoryCacheEntryOptions()
.SetAbsoluteExpiration(TimeSpan.FromSeconds(30))
.RegisterPostEvictionCallback((_,_,_) =>
{
Task.Run(async () => await MyTask()).ConfigureAwait(false);
}));
}
public async Task MyTask() {...}
(单例)服务已正确启动并且 SetTimer
运行,但在 30 秒(到期)后未调用回调(我在 lanmda 和 MyTask 中设置了断点,但都没有触发)。 . 我已经检查了密钥并且 AbsoluteExpiration
设置正确。
我看到 this answer 在这里发生了同样的事情(线程休眠)?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。