标签:finally visual apt ram pca lan server ref 有趣的
使用Using来声明Connection来Connection自动关闭回收,避免忘记回收关闭
在撰写Connection的时后,如果Conn在Open后如果没有Close的话,就会造成Connection一直连着直到GC起来才能够把资源释放
这样的现象只要在错误处理上没有处理好,很容易就会造成这样的结果,而这样的结果并不会造成Web Server的负担,有负担的是后端的SQL Server
这样会产生一个有趣的现象,当Web Server与SQL Server不同主机的时候,因为在Web Server上撰写程序没有控制好,造成SQL Server的资源消耗....可是由于Web Server本身并不会有感觉(损耗的是SQL Server),所以Web Server不会因为资源不足启动GC来回收资源→造成SQL的资源浪费又无法有效回收
而要避免这样的情形发生,.NET Framework 2.0提供了一个新的方式,就是使用Using来声明变量,那么在程序执行到End Using的时候就会自动的把该变量做资源回收
以下来看看使用Dim与使用Using的写法上有什么不一样的方式
使用Dim的方式声明
Dim ConnStr As String = getConnStr()
Dim Conn As New SqlConnection(ConnStr)
Try
Catch ex As Exception
‘错误处理
Finally
‘关闭回收
Conn.Close()
Conn.Dispose()
End Try
使用Using声明
Dim ConnStr As String = getConnStr()
Try
Using Conn As New SqlConnection(ConnStr)
End Using
Catch ex As Exception
‘错误处理
End Try
在程序中就算错误处理没有处理好,发生错误后没有把Connection做close,在执行到End Using的时候,也会把该变量自动的做资源回收处理
可以省掉Conn.Cloase与Conn.Dispose
至于有网友问到,Conn.Open是否需要,这就要看你之后会用到了什么东西,如果您用Cmmd(Command)的ExecuteReader,ExecuteNonQuerry,那么你必须先执行Conn.Open,如果您透过Da(SqlDataAdapter)来处理,那么Da会自动判断是否已经Conn.Open如果没有,他会自己处理。
以下是签名:
|
topcat |
原文:大专栏 使用Using来声明Connection来Connection自动关闭回收,避免忘记回收关闭
使用Using来声明Connection来Connection自动关闭回收,避免忘记回收关闭
标签:finally visual apt ram pca lan server ref 有趣的
原文地址:https://www.cnblogs.com/petewell/p/11445726.html