[英]When will object be disposed if created only for parameter to function?
相比:
Using Response As WebResponse = Request.GetResponse
Using reader As StreamReader = New StreamReader(Response.GetResponseStream)
strWebResponse = reader.ReadToEnd
End Using
End Using
有:
Dim xmldoc As XmlDocument = new XmlDocument
xmldoc.Load(Request.GetResponse().GetResponseStream)
在第一個示例中, Response
顯然位於第二個End Using
語句中。
在第二個示例中,何時處置由Request.GetResponse()
創建的WebResponse
對象?
是否WebResponse
以下方式重寫第二個示例,以確保正確處理WebResponse
?
Dim xmldoc As XmlDocument = new XmlDocument
Using Response As WebResponse = Request.GetResponse
xmldoc.Load(Response.GetResponseStream)
End Using
在第二個示例中,何時處置由Request.GetResponse()創建的WebResponse對象?
不。您沒有顯式調用Dispose
,它不是Using
語句中的資源,因此不會被Dispose
。
最終將收集垃圾,但是您不應該依賴於垃圾回收的時機-您應該直接處理垃圾。 特別是,使用WebResponse
,存在一個連接池,每個目標的連接池數最多-因此,如果您嘗試從同一服務器中獲取多個頁面而不處理響應,則可能會在等待較早響應之前掛起最終確定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.