2017-06-26 52 views
0

是否有任何方法停止代码运行时HttpWebResponse仍在加载进度?VB.NET - 中止从HttpWebRequest获得响应

比如我在运行此代码,我相信它会需要10秒,得到响应:

Dim urlAddress As String = "https://google.com" 
Dim request As HttpWebRequest = DirectCast(WebRequest.Create(urlAddress), HttpWebRequest) 
Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse) 

而现在,虽然要求越来越响应......为例,在第二个4我会按停止按钮,这将中止得到响应,它会弹出一个MessageBox。

Private Sub btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn.Click 
     HttpWebResponseName.Abort() 
     MessageBox.Show("Done!") 
End Sub 

谢谢!

回答

0

它看起来像这个代码旨在运行客户端。请记住,从客户角度来看,您发送请求并接收响应。响应来自服务器,所以你无法控制它。相反,你可以中止要求,在响应结果(所以你需要以一个钩保持这一请求中止吧):

Private _activeRequest As HttpWebRequest 
'... other member-level code here 

然后,你的代码,将创建请求可以被更新为:

Dim urlAddress As String = "https://google.com" 
_activeRequest = DirectCast(WebRequest.Create(urlAddress), HttpWebRequest) 
Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse) 

这将使您的单击事件的方法是这样的:

Private Sub btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn.Click 
    _activeRequest.Abort() 
    MessageBox.Show("Done!") 
End Sub 
+0

我已经试过这个了,但是HttpWebResponse仍然会等到它会实际得到响应,否则超时将会到达,所以即使请求被终止,代码仍然会运行。所以这并没有太大的帮助,我试图阻止与响应和请求同时发生的任何事情,然后做其他事情。 – Mava