在ASP.NET MVC中使用Fire和忘记的危险

我在ASP.NET MVC应用程序中使用Fire和Forget意味着我正在生成一个长期运行的CPU或IO密集型后台线程,它不依赖于用户需要。 这很好但我担心在应用程序域/进程回收时间的过程中,我的后台线程可以保证运行完成或者可能在中间停止。 如果有任何危险,那么如何避免这种情况。

如果您需要保证流程运行直到完成,那么在Web服务器下运行它确实是错误的地方。 您应该考虑将长期运行的任务放在服务中,并通过某种IPC(WCF考虑到)从Web服务器与它进行通信。

我认为ASP.NET MVC不是这里的正确选择。 您应该查看使用Workflow Foundation。 可以通过进行WCF调用来触发工作流。

这是正确的答案(Windows服务或WebBackground ),

在此处输入图像描述