2

我们有一个场景,在从我们的代码中为来自 iis 的一个 asp.net 请求提供服务时,我们从线程池创建了一个子线程来服务一些后台任务。这个想法是在不依赖于我们的情况下完成处理请求的主线程子线程任务。但我们的疑问是,在 asp.net 中处理请求时,workerprocess 是否会等待线程完成其任务?

4

2 回答 2

4

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

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

于 2009-11-11T07:15:33.107 回答
3

不,后台线程不会等待主线程完成,它会立即启动。如果您使用线程池,您的任务可能必须等待线程可用,但仅此而已。

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

于 2009-11-11T07:56:33.227 回答