Windows 8 metro app,System.Net.HttpWebResponse中缺少Close方法

时间:2013-09-06 03:16:28

标签: .net http windows-8 io

有时http连接没有成功关闭在windows 8 metro app中退出的app app,有没有人有很好的解决方案来关闭http连接?

下面的文档中有 System.Net.HttpWebResponse 关闭方法,但我在编码时找不到它,关闭 System.IO.Stream 中也缺少>方法,但文档中存在。

System.Net.HttpWebResponse

System.IO.Stream

1 个答案:

答案 0 :(得分:0)

并非所有版本的.Net Framework都支持所有方法(或类)。如果您查看HttpWebResponse Class的文档,您将看到这些方法(以及其他方法):

httpwebresponse-methods

每种方法都有一个符号,该符号位于名称前面:

avail-all表示该方法是公开的;暗示该方法可用于使用.Net Framework的完整版本的项目。
avail-pcl表示该方法可用于可移植类库项目 avail-w8-apps表示该方法可用于 Windows应用商店项目。

您会注意到CloseCreateObjRef方法仅适用于使用完整版.Net Framework的项目。 Dispose方法可用于所有三种.Net项目(完整的.Net Framework,可移植类库和Windows应用商店)。

回答关于正确“关闭”每个班级的问题:

对于实施HttpWebResponse的{​​{1}}类,您可以使用IDisposable。这是一个c#示例,但VB.Net也支持using

using

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://127.0.0.1"); using (HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync()) { // Do something with response object. response.DoSomething(); ... // End of "using" block automatically calls "response.Dispose()" } 语句将确保在代码块的末尾调用using。这将清理Dispose()对象。

至于清理response对象 - 它还会实现Stream,这意味着您也可以使用IDisposable。我也使用using,只是为了安全:

Flush

有关MSDN上using statement的更多信息。