2017-06-26 85 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