限制平行.ForEach只有64个动作

本文关键字:64个 只有 ForEach | 更新日期: 2023-09-27 18:17:40

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

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

这个问题是OleDbConnection似乎只允许64个打开的连接,并且在此并行。ForEach有300个循环。因此OledbConnection抛出错误,因为打开的连接超过64个

是否有一个工作,使TPL可以执行代码只有64次,其余的排队?有点像64个

限制平行.ForEach只有64个动作

你需要添加

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

并使用` parallelOptions `调用` Parallel。ForEach '

所以你的代码看起来就像
Parallel.ForEach(fileNames.ToArray(), parallelOptions , filename =>
.
.