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

C# 如何避免手动启动的线程死亡?,c#,multithreading,iis,timeout,C#,Multithreading,Iis,Timeout,我在IIS上运行的系统上有一个进程,它需要几个小时才能完成,所以它在线程上运行 问题是,由于IIS进程超时(无活动),此线程在一段时间后被丢弃。这个线程不能在中间停止。 如果线程正在运行,如何防止此超时?在IIS中的应用程序池设置中,可以将其配置为在某段时间不活动后不回收AppDomain。但是请注意,在IIS中使用长时间运行的任务是个坏主意,并且此设置可能不是100%可靠的。例如,如果您的服务器开始运行内存不足或CPU使用率高,IIS仍然可以回收它。IIRC也可以配置此阈值 最好的方法是将这些

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

问题是,由于IIS进程超时(无活动),此线程在一段时间后被丢弃。这个线程不能在中间停止。


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

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

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


如果您无法完成之前的任何一项任务,并且您非常绝望,那么在完全绝望的情况下,您可以尝试的最后一件事就是通过定期发送HTTP请求从后台线程自动ping web应用程序,以避免它死亡。但是,这应该是您最不应该尝试的事情。

假设您不能在IIS中配置超时?您阅读了的警告吗?也许可以将其作为服务在IIS之外运行?(“小时”看起来不像IIS任务。)类似于: