在http处理程序中创建的后台线程

时间:2013-06-06 13:26:03

标签: c# asp.net multithreading

我正在查看我的开发人员编写的代码。在其中一个Http处理程序中,它们接收多个长IO请求,它们通过为每个请求手动创建线程并安排它而不是使用ThreadPool来调度。没有在ThreadPool上排队这些请求是有意义的,因为它可能会占用用于提供Web请求的线程。

不是我的问题是,如果我在处理程序中创建后台线程,并且我的应用程序没有收到任何其他http请求,因为空闲时间被定义为终止工作进程。然后我的工作进程将被杀死,这些线程会发生什么?

它们是否会被终止,因为它们没有被标记为前台线程?

1 个答案:

答案 0 :(得分:0)

是。它们都是与工作进程一起死亡的同一应用程序域的一部分。正常Thread如果未标记为IsBackground,它将基本保持流程开放直至完成。

如果启用了重叠的工作进程(默认情况下为true),这对于新进程启动时出现的新请求不是问题,但如果关闭它,它将等到现有进程退出,基本上停止了网站。

所以,如果你希望它们能够延长寿命,你要么必须增加超时,要么使用IPC等通过一些外部流程处理它们。