DBCommand используя блок
У меня есть следующий код:
using (MySqlConnection conn = new MySqlConnection(connStr))
{
conn.Open();
cmd = conn.CreateCommand();
cmd.CommandText = "SELECT * FROM Events";
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
После прочтения нескольких статей на этом сайте предлагается DbCommand
должен быть в блоке использования, однако я не понимаю, зачем это нужно. Соединение закрыто, так что же удерживает DbCommand, для чего нужен блок using? Действительно ли это так, если класс наследует от IDisposable, что вы должны использовать блок using или вызывать вручную Dispose?
Я запустил симулятор с 100 потоками кода выше, а также с кодом с использованием блока на DbCommand
и я не видел реальных различий в использовании памяти.
1 ответ
DbCommand
является абстрактным и не предполагает, какие собственные ресурсы будет содержать подкласс конкретного поставщика и в каком порядке они должны быть освобождены. Правильное вложение using
блоки кажутся разумным соглашением о неявном кодировании.