背景
我有一项服务连接到 Microsoft CRM 2011,并更新了数万条记录。在我们的开发环境中,单线程运行它会导致一分钟内只更新 30 条记录。我使用 TPL Parallel.Inovke 切换到多线程,但与 CRM 的连接不是线程安全的,因此我为我正在处理的每条记录创建一个新连接。此更改仅将我的吞吐量提高到每分钟 60 条记录。然后我回去将记录批处理在一起,这样每个线程都会打开一个连接,然后一次处理 1000 条记录。这将我的吞吐量提高到每分钟大约 500 次更新。我可以继续沿着这条路走下去,并尝试根据线程数微调批处理的大小,但真正的解决方案是执行某种连接池,所以每个线程都有它
如何执行连接池?
TPL 是否提供了一种将对象从正在完成的 Action 传递到将要处理的下一个 Action 的方法?如果没有,是否有一个很好的例子来说明如何编写自己的连接池类?