何时使用.NET TPL与简单的.NET线程池?

何时使用.NET TPL与简单的.NET线程池?,.net,multithreading,.net,Multithreading,我正在设计一个windows服务,它将查询数据库表,以获得要处理的xml文档列表。我可以得到一份文件,我可以得到100份。我原本打算将每个请求放入.NET线程池中进行处理,但我想知道是否有一个使用.NET TPL进行处理的模型或示例。对于这样一个简单的模型,使用TPL是否值得呢?现在几乎没有理由直接使用线程池。基本方法可能是使用异步I/O来执行DB请求(无线程),然后在默认(线程池)任务调度器上继续工作。如果您需要并行化处理(实际上是可行的,因此您可能希望避免共享可变状态),您可以简单地使用Pa

我正在设计一个windows服务,它将查询数据库表,以获得要处理的xml文档列表。我可以得到一份文件,我可以得到100份。我原本打算将每个请求放入.NET线程池中进行处理,但我想知道是否有一个使用.NET TPL进行处理的模型或示例。对于这样一个简单的模型,使用TPL是否值得呢?

现在几乎没有理由直接使用线程池。基本方法可能是使用异步I/O来执行DB请求(无线程),然后在默认(线程池)任务调度器上继续工作。如果您需要并行化处理(实际上是可行的,因此您可能希望避免共享可变状态),您可以简单地使用
Parallel.ForEach


当然,如果大部分工作是由DB而不是客户机应用程序完成的,那么只需异步I/O就可以完成全部工作。

TPL的目的是在很大程度上取代线程池。通常,当不确定时,使用TPL。