在C#中,connection.Dispose()是什么意思?

时间:2010-09-15 06:17:57

标签: c#

C#中的connection.Dispose()是什么意思?

4 个答案:

答案 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();