我有以下代码将数据插入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批次
答案 0 :(得分:3)
您需要添加
ParallelOptions parallelOptions = new ParallelOptions();
parallelOptions.MaxDegreeOfParallelism = 64;
并使用' parallelOptions'致电' Parallel.ForEach'
所以你的代码看起来像
Parallel.ForEach(fileNames.ToArray(), parallelOptions , filename =>
.
.