Dapper открывает соединение для вас;но он также закрывает его, когда работа завершена.
Теперь вы выполняете две независимые async
задачи, используя одно соединение.
soldUrls.ForEach(url => tasks.Add(InsertUrlAsync(connection, url)));
rentUrls.ForEach(url => tasks.Add(InsertUrlAsync(connection, url)));
Обе задачиработают одновременно.Когда работа одной задачи завершена, она закрывает соединение.Но все еще выполняется другая задача, которая больше не имеет доступа к открытому соединению и, следовательно, исключение, которое вы упомянули в вопросе.
Как вы сказали, если вы открываете соединение самостоятельно, Dapper не закрывает его, и все просто работаетнормально.
Кстати, при одновременном использовании экземпляра соединения могут возникнуть непредвиденные проблемы.Пожалуйста, обратитесь к этому вопросу для получения более подробной информации.