C#中的connection.Dispose()
是什么意思?
答案 0 :(得分:9)
Dispose()方法从内存中永久删除任何资源((un)托管)以进行清理,并且资源不再存在以供进一步处理。
实施例: -
void DataTest()
{
using(SqlConnection conn1 = new SqlConnection(...)) {
conn1.Open();
SqlCommand mycommand = new SqlCommand("Select * From someTable", conn1);
using(SqlDataReader myreader = mycommand.ExecuteReader()) {
if(myreader != null)
while(myreader.Read())
Console.WriteLine(myreader.GetValue(0).ToString() + ":" + myreader.GetTypeName(0));
}
mycommand.Dispose();
}
}
答案 1 :(得分:7)
类实现IDisposable interface包含一个名为Dispose()
的方法,您可以在其中释放资源或执行其他操作。
此外,using
语句可以帮助自动调用Dispose()
方法。
using (SqlConnection connection = new SqlConnection(connStr))
{
//do something
}// it will automatically Dispose() here
致电myClass.Dispose()
时会发生什么情况取决于您在Dispose
方法中所写的内容。例如:
public class MyClass : IDisposable
{
//since MyClass implements IDisposable, it must contain a Dispose() method otherwise will compile error
public void Dispose()
{
// do something
}
}
所以如果你想知道调用connection.Dispose()
时发生了什么,你必须看一下连接类的Dispose()
方法(也许是SqlConnection?)。如果它是.NET内置库(这意味着您无法轻松获取源代码),则可以使用工具来帮助调用Reflector
答案 2 :(得分:1)
通常,在使用完组件后,会调用Dispose来释放资源。
SqlClientConnection对象上的Dispose方法将强制关闭连接。
这是一个常见的pattern,不仅可以在.Net中找到,也可以在Java中找到。
MSDN应该以正确的方式提供您需要的所有文档来调用Dispose
答案 3 :(得分:0)
conn.Dispose()在unmanage代码中调用该函数。
实际上在编程时,你不需要调用这个函数,只需调用conn.Close();