Я должен делать что-то неправильно, так как этот код блокируется и работает синхронно, несмотря на вызов метода async
GetStringAsync
. Любая помощь действительно поможет мне понять причины:httpclient.GetStringAsync blocking
Private Async Sub btnTest_Click(sender As Object, e As EventArgs) Handles btnTest.Click
Dim urls As List(Of String) = SetUpURLList()
Dim baseAddress = New Uri("http://www.amazon.com")
ServicePointManager.DefaultConnectionLimit = 10
Dim requestNumber As Integer = 0
For Each url In urls
requestNumber += 1
Console.WriteLine("Request #:{0}", requestNumber)
Dim cookies As New CookieContainer()
Dim handler As New HttpClientHandler With {.CookieContainer = cookies, _
.UseCookies = True}
Dim httpClient = New HttpClient(handler) With {.BaseAddress = baseAddress}
Dim response As String = Await HttpClient.GetStringAsync(url).ConfigureAwait(False)
For Each cook As Cookie In cookies.GetCookies(baseAddress)
Console.WriteLine(cook.Name & "=" & cook.Value)
Next
httpClient.Dispose()
Next
Console.WriteLine("Done")
End Sub
Вы уверены, что блокируете вызов 'GetStringAsync'? –
Когда я даю точку останова в Dim-ответе As String = Await HttpClient.GetStringAsync (url) .ConfigureAwait (False), тогда код ломается в первый раз, а затем при воспроизведении он ожидал, что он снова сломается для второго URL GetAsyn и таким образом ломается до первого или любого вызова asyn. То не происходит, оно ломается в вышеуказанной строке и при выполнении, оно завершает указанную выше строку, а затем переходит на следующую строку и после завершения всего цикла переходит во второй URL-адрес и снова разбивается на строку. – Kallol
Кроме того, видели только один порт TCP, который создается, закрывается, а затем снова создается и так далее, когда цикл перемещается. – Kallol