Я предполагаю, что BaseConnection является оберткой вокруг SqlConnection, а _mySqlConn является экземпляром BaseConnection. Я подозреваю, что проблема в том, что вы открываете и закрываете соединение в ExecSQL, и в то же время у вас есть оператор using вокруг BaseConnection, создающий эту утечку. Я бы рефакторинг вашего кода с правильным размещением операторов использования для обеспечения правильного удаления объектов и освобождения ресурсов.
Пример
var query = "YOUR QUERY";
using (var connection = new SqlConnection("YOUR CONNECTION STRING"))
{
using (var command = new SqlCommand(query, connection))
{
await connection.OpenAsync();
using (var reader = await command.ExecuteReaderAsync())
{
if (reader != null)
{
while (await reader.ReadAsync())
{
// your logic
}
}
} // reader closed and disposed up here
} // command disposed here
} //connection closed and disposed here
}
Также обратите внимание, как я 'используя асинхронные версии методов ADO.NET. Асинхронные команды имеют решающее значение для достижения масштаба, пропускной способности и задержки.
Я рекомендую использовать Dapper вместо попыток разработки универсального устройства чтения данных и написания всего стандартного кода ADO.NET самостоятельно.