C# 创建具有有限线程数的自定义线程队列

C# 创建具有有限线程数的自定义线程队列,c#,.net,multithreading,threadpool,C#,.net,Multithreading,Threadpool,我们有一个windows服务,它处理队列中的消息。 每条消息都包含一个到db的crud执行字符串 到目前为止,我们使用ThreadPool将max threads设置为可配置数量 在看到它造成的问题并阅读了几篇反对使用ThreadPool进行长时间操作的文章之后,我们正在寻找更好的解决方案来限制我们的最大线程数 您有好的解决方案可供建议吗?为什么操作会长期运行?这是因为CPU受限,还是因为IO阻塞?db执行可能需要一些时间,因为我们在out表中有很多信息(比方说..不仅仅是简单的计算)。所以你的

我们有一个windows服务,它处理队列中的消息。 每条消息都包含一个到db的crud执行字符串

到目前为止,我们使用ThreadPool将max threads设置为可配置数量

在看到它造成的问题并阅读了几篇反对使用ThreadPool进行长时间操作的文章之后,我们正在寻找更好的解决方案来限制我们的最大线程数


您有好的解决方案可供建议吗?

为什么操作会长期运行?这是因为CPU受限,还是因为IO阻塞?db执行可能需要一些时间,因为我们在out表中有很多信息(比方说..不仅仅是简单的计算)。所以你的应用程序正在等待db?你是如何访问数据库的?有没有可能使您的查询异步?如果是这样,您可以继续使用线程池。我们使用ado.net访问数据库。它不能是异步的,因为这样信息就不可靠了。你知道线程池的其他解决方案吗?“因为信息不可靠”我根本不相信这个。异步方法没有同步方法那么可靠,使用异步方法是避免线程池不足的常用方法。然而,如果你确信这不是你想要追求的东西,你可以去调查。对我来说似乎很讨厌。每次都喜欢异步而不是同步,尤其是在处理线程池不足时。