采取这样的代码:
Dim dt As New DataTable("Table")
Dim sda As New SqlDataAdapter(pQuery, pCon)
sda.SelectCommand.CommandTimeout = pCommandTimeout
sda.Fill(dt)
sda.Dispose()
Return dt
和:
Dim myconnection As SqlConnection = New SqlConnection(DBValues.m_sDBString)
myconnection.Open()
Try
Dim com As New SqlCommand(cmd, myconnection)
com.ExecuteNonQuery()
com.Dispose()
Catch ex As Exception
Throw ex
Finally
If myconnection.State = ConnectionState.Open Then
myconnection.Close()
myconnection.Dispose()
End If
End Try
什么时候显式调用诸如 Close() 和 Dispose() 之类的东西变得过分了?因为显然 GC 大部分时间都在内部处理这个问题,但不是所有时间(?)。到目前为止,我还没有真正看到有人就如何区分何时过度和何时过度,或者明确执行此操作与仅让 GC 处理它之间有什么区别,提出了非常清晰和明确的解释。有人可以解释一下吗?谢谢!