1、超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
解决方法
1)关闭数据库连接,connection.close,connection.dispose
2) 增加线程池的最大线程数,延长连接回收时间:Data Source=。。。 ;Initial Catalog=。。。;Persist Security Info=True;User ID=。。。;Password=。。。;connect Timeout=120;Max Pool Size=512; Min Pool Size=5
2、事务(进程 ID 65)与另一个进程被死锁在 锁 | 通信缓冲区 资源上,并且已被选作死锁
出现以上两个问题后我修改了代码。
我原先用的是并行计算,
Parallel.For(0, Length, i =>{....});
后来改成在里面使用Task
List<Task> taskList = new List<Task>();
Parallel.For(0, Length, i =>{Task task = new Task(() =>{...}
taskList.Add(task);
task.Start();
);