DBCommand using block



我有以下代码:

using (MySqlConnection conn = new MySqlConnection(connStr))
{
    conn.Open();
    cmd = conn.CreateCommand();
    cmd.CommandText = "SELECT * FROM Events";
    cmd.CommandType = CommandType.Text;
    cmd.ExecuteNonQuery();
}

从阅读这个网站上的一些文章来看,有人建议DbCommand应该在using块中,但是,我看不出为什么需要这样做。连接是关闭的,那么DbCommand坚持需要使用块的是什么?如果一个类继承自IDisposable,那么您必须使用using块或手动调用Dispose,这真的是这样吗?

我在上面的代码上运行了一个有100个线程的模拟器,并且在DbCommand上运行了一个使用块的代码,我可以看到内存使用方面没有真正的差异。

DbCommand是抽象的,并且没有预先假设特定于供应商的子类将持有哪些本地资源,以及它们应该以什么顺序释放。using块的适当嵌套似乎是一种合理的隐式编码约定。

最新更新