【发布时间】:2011-09-12 10:49:42
【问题描述】:
我想知道我最终是否会从此代码中获得任何未关闭的流:
Public Function [Get](ByVal url As String) As String
Using reader = New System.IO.StreamReader(System.Net.WebRequest.Create(url).GetResponse.GetResponseStream)
Return reader.ReadToEnd
End Using
End Function
这个呢:
Public Function Get2(ByVal url As String) As String
Using stream = System.Net.WebRequest.Create(url).GetResponse.GetResponseStream
Using reader = New System.IO.StreamReader(stream)
Return reader.ReadToEnd
End Using
End Using
End Function
基本上,我们需要关闭System.Net.WebRequest的ResponseStream吗?
【问题讨论】:
-
不,你不需要关闭它,使用的是 try{ Stream stream; 的包装器。 ... }catch {..} 最后 { if (stream != null) { stream.Close(); } }
-
@Artur:我认为您误解了这个问题 - 这与您是否需要显式调用 Close 无关,而是关闭 StreamReader(通过 using 语句)是否足以关闭流和网络响应。
-
@Artur:
using最终在对象上调用Dispose(),而不是Close()。释放对象应该关闭打开的资源,但using不会直接这样做。
标签: .net vb.net stream response system.net