限制平行.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个
你需要添加
ParallelOptions parallelOptions = new ParallelOptions();
parallelOptions.MaxDegreeOfParallelism = 64;
并使用` parallelOptions `调用` Parallel。ForEach '
所以你的代码看起来就像Parallel.ForEach(fileNames.ToArray(), parallelOptions , filename =>
.
.