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

时间:2014-10-05 15:55:45

标签: asp.net webforms task

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

我该怎么做?

1 个答案:

答案 0 :(得分:0)

虽然,你可以这样做,但在ASP.NET中创建一个长时间运行的任务通常不是一个好主意,特别是如果它们是后台任务。

菲尔哈克有一篇很好的文章 - 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服务),它可以读取" Pending"任务并将它们标记为" InProgress"在处理期间"完成"当它完成。这样,当任务是"待定"时,您可以让用户从UI取消任务,这将简单地删除"待定"记录来自数据库。

另一种选择是使用诸如此类的解决方案 - http://hangfire.io/