取消长时间运行的任务Asp.net



我正在使用ASP.NET WebForms。在PostBack中,我创建了一个Task(任务运行时间很长)。在html页面中,我需要一个可以取消此任务的按钮。1.我单击在服务器上运行任务的GetResults按钮2.等待一段时间后,我点击按钮取消,我需要任务将被取消

我该怎么做?

尽管你可以做到,但在ASP.NET中创建一个长时间运行的任务通常不是一个好主意,尤其是当它们是后台任务时。

Phil Haack有一篇很棒的文章http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx/

这是关于这个话题的另一篇好文章——http://blog.stephencleary.com/2012/12/returning-early-from-aspnet-requests.html

你可以考虑像消息总线这样的东西。您还可以考虑在数据库中使用一个简单的TaskQueue表,web应用程序将在该表中插入与状态为"挂起"的任务相对应的记录。然后,您可以有一个后台服务(如windows服务),它读取"挂起"任务,并在处理过程中将其标记为"正在进行",在处理完成时将它们标记为"完成"。这样,当任务是"挂起"时,您可以让用户从UI中取消任务,这只需从数据库中删除"挂起的"记录。

另一种选择是使用这样的解决方案——http://hangfire.io/

最新更新