Task.Delay()
在循环中每天延迟24个小时来运行代码是否安全?我的代码是:
while (!token.IsCancellationRequested)
{
await Task.Delay(TimeSpan.FromDays(1), token);
await DoStuff(token);
}
Task.Delay()
以这种方式使用安全吗?
包括您的评论中的某些上下文,不,这不是使用ASP.net Core的安全方法,因为很有可能您的过程将在24小时之前被回收。
对于这样的功能,您确实应该查看一个计划程序,该计划程序旨在将状态持久化到某种数据库,并且比Web托管核心通常具有更长的生存期。
Hangfire是您要查找的内容的完整实现,请查看https://www.hangfire.io/。
如果您有兴趣自己构建某些东西,我建议您使用托管服务,该服务在.NET Core 3+中已引起广泛关注,并且现在确实非常可靠。这是上面的Microsoft文档(https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-3.1&tabs=visual-studio),这里有一个不错的博客文章通过一个特定的示例(https://wakeupandcode.com/worker-service-in-asp-net-core/)提供了很好的演练
您在这里想要的一般模式是有一个服务,该服务每隔X分钟检查一次即将执行的任务表,并在必要时运行必要的任务。然后,只需修改上面的代码,即可在表中放入一行,并加上DoStuff()函数的到期时间。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句