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

时间:2013-06-04 09:58:17

标签: c# asp.net asp.net-mvc

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

以下是正确答案(Windows服务或WebBackground),

enter image description here