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