【问题标题】:How to create a long running background task from MVC [duplicate]如何从 MVC 创建一个长时间运行的后台任务 [重复]
【发布时间】:2015-03-26 00:34:52
【问题描述】:

我在 VS 2013 中使用 EF6、MVC 5。我有一个长时间运行的任务导致超时错误,因此我想将其设置为单独的后台任务运行并立即返回到 Web 控制器。后台任务将向 SQL 服务器数据库报告进度。本质上,我需要的是即发即弃功能。似乎有很多选择:

  1. 将任务的详细信息写入服务器并使用 Windows 服务处理它们更新这是使用的选项
  2. 使用async - 这似乎不是一个安全的选择
  3. 使用HostingEnvironment.QueueBackgroundWorkItem方法

选项 3 是首选,因为它将所有代码保存在一个解决方案中。请您评论一下每个的优缺点,如果可能的话,请指出第 3 个的工作示例?

【问题讨论】:

标签: c# asp.net-mvc multithreading entity-framework async-await


【解决方案1】:

HostingEnvironment.QueueBackgroundWorkItemvalid solution,但请记住,长时间运行的进程可能会中断,例如,如果应用程序池回收。

更好的选择是在计划任务中运行它,例如使用 Quartz.NET。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 2014-10-26
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    相关资源
    最近更新 更多