我是絕對的初學者在ASP.net(VB。)請原諒我,如果這個問題對於有經驗的會員來說太明顯了。WebRequest異步回調代碼只有第一次打電話
我試圖在異步模式下製作一個簡單的WebRequest,以防目標URL花費很長時間提供數據。在我的代碼下面,我只想看看回調塊(RespCallback)是否每次都被正確調用。如果一切順利,每次單擊調用「GetData」子項的按鈕時,lblResult都應該附加字符串「123」。
但是,lblResult僅在第一次單擊後顯示123。在隨後的點擊之後,lblResult僅附加'12',就好像RespCallback從不被調用一樣。當我試圖在Visual Studio中進行調試時,執行實際上直接進入RespCallback部分,並且lblResult.Text手錶實際上顯示'123123',但生成的網頁始終只顯示'12312'
我確信我是在這裏錯過了一些基本的東西,但我不知道是什麼。我甚至猜測它必須處理瀏覽器緩存(因此第二次更改結果),但我不知道如何解決這個問題。
有人可以幫忙嗎?提前致謝。
吉姆
Dim myWebRequest As WebRequest
Public Shared allDone As New ManualResetEvent(False)
Private Shared BUFFER_SIZE As Integer = 1024
Public Class RequestState
' This class stores the state of the request
Private Shared BUFFER_SIZE As Integer = 1024
Public requestData As StringBuilder
Public bufferRead() As Byte
Public request As WebRequest
Public response As WebResponse
Public responseStream As Stream
Public Sub New()
bufferRead = New Byte(BUFFER_SIZE) {}
requestData = New StringBuilder("")
request = Nothing
responseStream = Nothing
End Sub ' New
End Class ' RequestState
Public Sub GetData(Sender As Object, Args As System.EventArgs)
lblResult.Text += "1"
myWebRequest = WebRequest.Create(dataURL)
Dim myRequestState As New RequestState()
myRequestState.request = myWebRequest
' Start the asynchronous request.
Dim asyncResult As IAsyncResult = CType(myWebRequest.BeginGetResponse(AddressOf RespCallback, myRequestState), IAsyncResult)
lblResult.Text += "2"
allDone.WaitOne()
End Sub
Private Sub RespCallback(asynchronousResult As IAsyncResult)
lblResult.Text += "3"
allDone.Set()
End Sub
聽起來很愚蠢,但也許你的標籤實際上包含'123123',但佈局正在修剪,你只是看不到完整的價值? –