C# IIS和Parallel.ForEach

C# IIS和Parallel.ForEach,c#,iis,parallel-processing,C#,Iis,Parallel Processing,我正在IIS中托管的WCF服务上使用Parallel.ForEach 据我所知,对于并行循环中的每个任务,线程都将被打开 但是IIS对可以打开的线程数量有限制。我想是20 所以我的问题是:是否建议在IIS进程上使用Parallel.ForEach?据我所知,在IIS中使用TPL时存在一些问题 首先,IIS对其线程池中的线程没有硬限制。这实际上取决于线程在做什么(CPU绑定、IO绑定等)。因此,线程的数量本身并不重要 其次,据我所知,TPL将从线程池中获取线程。因此,实际上,您正在获取可用于服务请

我正在IIS中托管的WCF服务上使用Parallel.ForEach

据我所知,对于并行循环中的每个任务,线程都将被打开

但是IIS对可以打开的线程数量有限制。我想是20


所以我的问题是:是否建议在IIS进程上使用Parallel.ForEach?

据我所知,在IIS中使用TPL时存在一些问题

首先,IIS对其线程池中的线程没有硬限制。这实际上取决于线程在做什么(CPU绑定、IO绑定等)。因此,线程的数量本身并不重要

其次,据我所知,TPL将从线程池中获取线程。因此,实际上,您正在获取可用于服务请求的线程。同样,这可能是坏的,这取决于你消耗了多少流量

第三,IIS应用程序池将回收。当这种情况发生时,正如我所理解的,IIS将冻结线程的状态并将它们移动到另一个进程。这可能会对线程操作产生意外影响

通常,您希望使用TPL(
Parallel.ForEach
),因为您有一个长时间运行的进程。对于长时间运行的进程,最好调用另一个主机(Windows服务)来完成繁重的工作。例如,在Windows服务中,您可以更好地控制如何管理线程

希望这有帮助