内存缓存未过期

问题描述

使用 .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 (将#修改为@)