gpt4 book ai didi

c# - 在 ASP.NET 中使用任务

转载 作者:行者123 更新时间:2023-11-30 20:58:33 27 4
gpt4 key购买 nike

我正在尝试使用 System.Threading.Tasks.Task 类完成一些异步工作。场景很简单。我有一个网络应用程序,在一个按钮单击事件中,我启动了一个任务,该任务必须运行几分钟来检查一些外部服务。这不是一项繁重的任务。它要做的就是每 5 秒发送一次请求并获得响应。但它必须至少持续几分钟。所以,我不希望用户等到这个任务完成。开始任务后,我会立即返回给用户说任务已开始,完成后会通知他/她。我想知道我创建的这个任务是否会导致任何问题,因为我返回并结束了 HTTP 响应。

最佳答案

使用 Task 类型不可能实现这种类型的“异步工作”。正如我在博客中提到的,async does not change the HTTP protocol ;对于每个请求,您仍然会得到一个响应,仅此而已!

理想的 ASP.NET 应用程序不执行请求/响应对之外的任何工作。有很多方法可以让它发挥作用 (also described on my blog) ,但几乎从不推荐。

正确的解决方案是拆分处理。网站(或服务)应该通过将请求放入持久存储(例如 Azure 队列)来开始处理,一个单独的辅助服务(例如 Azure 辅助角色/Win32 服务)将进行轮询并将结果放入持久存储(例如 Azure 表)中,网站/服务可以对其进行轮询。

关于c# - 在 ASP.NET 中使用任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16018595/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com