2

我有以下代码将数据插入到 excel 文件中:

 Parallel.ForEach(fileNames.ToArray(), filename =>
 {
    OleDbConnection cn = new OleDbConnection(connect to filename.xlsx)
    cn.open()
    ... oledb stuff...
    cn.close()
 });

问题在于 OleDbConnection 似乎只允许 64 个打开的连接,并且在这个 Parallel.ForEach 中有 300 个循环。所以 OledbConnection 会抛出一个错误,因为有超过 64 个连接打开

是否有解决方法使 TPL 只能执行 64 次代码并将其余的排队?有点像一批64

4

1 回答 1

3

您需要添加

        ParallelOptions parallelOptions = new ParallelOptions();
        parallelOptions.MaxDegreeOfParallelism = 64;

并使用 'parallelOptions' 调用 'Parallel.ForEach'

所以你的代码看起来像

Parallel.ForEach(fileNames.ToArray(), parallelOptions , filename =>
.
.
于 2013-06-09T11:57:13.790 回答