在C#Web应用程序中实施定期安排的异步操作
>
挑战:>许多C#Web应用程序都需要定期执行任务,例如将用法数据发送到远程服务,而不会影响用户请求的响应能力。 这需要类似于JavaScript的
函数的机制,但是在C#的异步上下文中setInterval
方法:
类提供定时机制时,其
事件处理程序需要同步方法签名。 一个更健壮,更灵活的解决方案涉及Timer
> Elapsed
的回路:while
Task.Delay()
此代码在指定的
<code class="language-csharp">public async Task ExecutePeriodicallyAsync(TimeSpan interval, CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { await MyAsyncMethod(); await Task.Delay(interval, cancellationToken); } }</code>
允许循环的优雅终止。MyAsyncMethod()
>
ASP.NET的重要考虑因素:interval
CancellationToken
在ASP.NET的上下文中,只需启动此任务并忘记它(“燃烧”)。 这可能会导致内存泄漏和应用程序不稳定。 对于ASP.NET中可靠的背景任务管理,请考虑以下替代方案:>
hangfire:
专门设计和管理背景作业的流行,强大的库。以上是如何在 C# Web 应用程序中按设定的时间间隔运行异步方法?的详细内容。更多信息请关注PHP中文网其他相关文章!