【问题标题】:How to avoid a manually started thread from dying?如何避免手动启动的线程死亡?
【发布时间】:2011-11-16 10:39:35
【问题描述】:

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

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

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

【问题讨论】:

  • 假设不能在 IIS 中配置超时?
  • 你读过stackoverflow.com/questions/536681/…的注意事项吗?
  • 也许在 IIS 之外作为服务运行它? (“小时”似乎不像 IIS 任务。)

标签: c# multithreading iis timeout


【解决方案1】:

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

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

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

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-22
  • 1970-01-01
  • 2011-01-13
  • 2012-06-24
  • 1970-01-01
相关资源
最近更新 更多