【发布时间】:2015-03-26 00:34:52
【问题描述】:
我在 VS 2013 中使用 EF6、MVC 5。我有一个长时间运行的任务导致超时错误,因此我想将其设置为单独的后台任务运行并立即返回到 Web 控制器。后台任务将向 SQL 服务器数据库报告进度。本质上,我需要的是即发即弃功能。似乎有很多选择:
- 将任务的详细信息写入服务器并使用 Windows 服务处理它们更新:这是使用的选项
- 使用
async- 这似乎不是一个安全的选择 - 使用
HostingEnvironment.QueueBackgroundWorkItem方法
选项 3 是首选,因为它将所有代码保存在一个解决方案中。请您评论一下每个的优缺点,如果可能的话,请指出第 3 个的工作示例?
【问题讨论】:
-
或ASP.NET long running task. Thread is being aborted exception、How to implement a very long running background task in Asp WebAPI application、Long Running Tasks - Best Practice - ASP.NET 4.0, C#,等等。在您最喜欢的搜索引擎中输入“asp.net long running task”,然后阅读为什么要使用选项 1。
-
@CodeCaster 谢谢。我确实将其编写为 Windows 服务。从那时起,它一直安静而有效地运行。
-
谢谢,很高兴听到。
标签: c# asp.net-mvc multithreading entity-framework async-await