簡體   English   中英

如果僅為了使參數起作用而創建對象時,將何時處置?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM