我在VS 2013中使用EF6,MVC 5.我有一个长时间运行的任务导致超时错误,因此我想将其设置为单独的后台任务运行并立即返回到Web控制器。后台任务将向SQL服务器数据库报告进度。基本上,我需要的是 fire and forget 功能。似乎有很多选择:
async
- 这似乎不是一个安全的选择选项3将是首选,因为它将所有代码保存在一个解决方案中。如果可能的话,请你评论每一个的利弊,并指出3号工作的例子。
答案 0 :(得分:5)
HostingEnvironment.QueueBackgroundWorkItem是valid solution,但请记住,长时间运行的进程可能会中断,例如,如果应用程序池回收。
更好的选择是在计划任务中运行它,例如使用Quartz.NET。