有时http连接没有成功关闭在windows 8 metro app中退出的app app,有没有人有很好的解决方案来关闭http连接?
下面的文档中有 System.Net.HttpWebResponse 的关闭方法,但我在编码时找不到它,关闭 System.IO.Stream 中也缺少>方法,但文档中存在。
答案 0 :(得分:0)
并非所有版本的.Net Framework都支持所有方法(或类)。如果您查看HttpWebResponse Class的文档,您将看到这些方法(以及其他方法):
每种方法都有一个符号,该符号位于名称前面:
表示该方法是公开的;暗示该方法可用于使用.Net Framework的完整版本的项目。
表示该方法可用于可移植类库项目
表示该方法可用于 Windows应用商店项目。
您会注意到Close
和CreateObjRef
方法仅适用于使用完整版.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的更多信息。