首页 >后端开发 >C++ >如何在 C# 中定期启动异步方法而不阻止用户请求?

如何在 C# 中定期启动异步方法而不阻止用户请求?

DDD
DDD原创
2025-01-26 11:06:10575浏览

How Can I Launch Async Methods at Regular Intervals in C# Without Blocking User Requests?

C#中定期执行异步任务

在不影响用户体验的情况下有效地收集数据并将其传输到服务需要在单独的线程上定期执行方法。 虽然 C# 的 Timer 类提供定期方法执行,但其参数要求可能与异步方法不一致。

异步方法调用

此示例演示了在没有 Timer 参数约束的情况下调用异步方法:

<code class="language-csharp">public async Task PeriodicFooAsync(TimeSpan interval, CancellationToken cancellationToken)
{
    while (!cancellationToken.IsCancellationRequested)
    {
        await FooAsync();
        await Task.Delay(interval, cancellationToken);
    }
}</code>

这里:

  • PeriodicFooAsync反复呼叫FooAsync
  • interval 设置执行之间的延迟。
  • cancellationToken 允许受控终止。 这对于正常关闭至关重要。

ASP.NET 注意事项

虽然在一般 .NET 应用程序中有效,但此方法需要在 ASP.NET 中仔细考虑。 不受控制的“即发即忘”异步操作可能会产生问题。 对于强大的 ASP.NET 解决方案,请研究 Hangfire 等库或参考 Stephen Cleary 的“ASP.NET 上的 Fire and Forget”和 Scott Hanselman 的“如何在 ASP.NET 中运行后台任务”等资源以获得最佳实践。

以上是如何在 C# 中定期启动异步方法而不阻止用户请求?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn