如何避免手动启动的线程死亡?

时间:2011-09-13 18:54:32

标签: c# multithreading iis timeout

我在IIS上运行的系统上有一个进程,它需要几个小时才能完成,因此它在一个线程上运行。

问题是这个线程在一段时间后被删除,因为IIS进程超时(没有活动)。这个帖子不能在中间停止。

如果线程正在运行,如何防止此超时?

1 个答案:

答案 0 :(得分:5)

在IIS中的应用程序池的设置中,您可以将其配置为在一段时间不活动后不回收AppDomain。但请注意,在IIS中使用长时间运行的任务是个坏主意,此设置可能不是100%可靠。例如,如果您的服务器开始运行内存不足或CPU使用率过高,IIS仍然可以回收它。 IIRC也可以配置此阈值。

最好的方法是将这些长时间运行的任务外部化为单独的Windows服务。

如果你不能做任何以前的事情并且绝对绝望,那么你可以尝试完全绝望的最后一件事是通过定期发送HTTP请求来自动ping这个后台线程中的Web应用程序以避免它从死亡。但再一次,这应该是你应该尝试的最后一件事。