我有一个查看数据库表、获取记录并发送电子邮件的过程。在一天/月的不同时间,这个过程可以得到很好的备份,目前我们有 30 个 Windows 服务实例正在运行以满足需求。
我们尝试创建一个实例,并为每个实例启动 6 个长时间运行的 TPL 任务,但这是静态的,不能很好地扩展。
我想做的是查看要处理的表,计算请求的数量,并将线程添加到池中,直到指定的上限,比如 NumProcessors * 10。当需求下降时,拉这些线程退出池,因为每个线程每 2 秒访问一次数据库,我宁愿每个实例有 6 个线程而不是 60 个线程。
添加线程非常容易,但我很难想出一种在需求下降时优雅地从池中拉出线程的方法。