【问题标题】:Cancelling long running tasks Asp.net取消长时间运行的任务 Asp.net
【发布时间】:2014-10-05 15:55:45
【问题描述】:

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

我该怎么做?

【问题讨论】:

    标签: asp.net webforms task


    【解决方案1】:

    尽管您可以这样做,但在 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/

    【讨论】:

      猜你喜欢
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      • 1970-01-01
      • 2012-06-08
      相关资源
      最近更新 更多