有时http连接没有成功关闭util应用程序在Windows 8 Metro应用程序中退出,有没有人有好的解决方案来关闭http连接?
下面的文档中有一个System.Net.HttpWebResponse的Close方法,但是我在编码时找不到它,System.IO.Stream中也没有Close方法但文档中存在。
有时http连接没有成功关闭util应用程序在Windows 8 Metro应用程序中退出,有没有人有好的解决方案来关闭http连接?
下面的文档中有一个System.Net.HttpWebResponse的Close方法,但是我在编码时找不到它,System.IO.Stream中也没有Close方法但文档中存在。
并非所有版本的 .Net Framework 都支持所有方法(或类)。如果您查看HttpWebResponse Class的文档,您将看到这些方法(以及其他方法):
每个方法的名称前都有一个符号:
表示该方法是公开的;暗示该方法可用于使用完整版 .Net Framework 的项目中。
表示该方法可用于可移植类库项目。
表示该方法可用于Windows 应用商店项目。
您会注意到Close
和CreateObjRef
方法仅在使用完整版 .Net Framework 的项目中可用。该Dispose
方法可用于所有三种 .Net 项目(完整的 .Net Framework、可移植类库和 Windows 应用商店)。
要回答有关正确“关闭”每个班级的问题:
对于HttpWebResponse
实现的类IDisposable
,您可以使用using
. 这是 ac# 示例,但 VB.Netusing
也支持。
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
,只是为了安全起见:
using (Stream myStream = /* create stream */)
{
// Do something with stream
myStream.DoSomething();
...
// Done using stream. Flush it.
myStream.Flush();
// End of "using" block automatically calls "myStream.Dispose()"
}
更多关于 MSDN 上的using 声明。