2

我有一个循环,从 SqlDataReader 逐行处理数据。它工作得很好。现在我想为它添加并行性。理想情况下,我想读取一行,将其扔到一个线程,读取另一行等。我想要一个可配置的线程数(比如 10 个),以便在一个打开(完成其任务)时,允许另一个启动。

有内置的方法可以做到这一点,还是我应该自己处理?我查看了 PLINQ 和 Parallel,但我想我很难理解它。

4

1 回答 1

2

由于您使用的是 a DataReader,它在内存中一次只能向前移动一行,因此您需要自己处理。您将需要将内存中的行编组为某个数据结构并将其传递给线程,然后Read()再次发出以进行下一步。

当您已经打开了太多线程时,您必须确定如何暂停,但这是另一回事,如果您最终对此有疑问,请发布您拥有的内容,我们很乐意提供帮助!

于 2013-07-12T15:08:12.420 回答