线程池如何在asp.net请求处理下运行

时间:2009-11-11 07:11:14

标签: asp.net threadpool

我们有一个场景,在我们的代码中从iis提供一个asp.net请求时,我们已经从线程池创建了一个子线程来处理一些后台任务。这个想法是为了完成处理请求而没有处理请求的主线程。取决于我们的子线程任务。但是我们的疑问是,在asp.net中处理请求时,工作流程是否仍会完成其任务?

2 个答案:

答案 0 :(得分:4)

不,如果您创建了一个单独的线程并且没有任何代码可以等待它,那么请求肯定会完成。

知道的是,在执行非ASPP.NET线程池线程时是否可以回收工作进程。我强烈怀疑它可以 - 所以要注意你的孩子任务可以随时终止。如果这是一个问题,您可能希望创建一个非线程池前台线程。

答案 1 :(得分:3)

不,后台线程不会等待主线程完成,它会立即启动。如果您使用线程池,您的任务可能必须等待线程可用,但这就是全部。

但是,您应该知道这可能不是一个好的解决方案,因为您的asp.net网站运行的应用程序域可能会在您的后台线程运行时被回收。这将终止后台线程,使任务不完整。如果可能,则应将后台任务分离为在单独进程中运行的服务应用程序。这将确保在运行时不会终止任务。