Страница: 1 |
Страница: 1 |
Вопрос: Проблема с асинхронностью
Добавлено: 22.03.13 13:21
Автор вопроса: Kryeker
Всем привет. Вот вызов нижеприведенной функции тормозит весь интерфейс, хотя по идее она должна выполниться асинхронно, в чем может быть проблема?
Private Async Sub Button_Click_1(sender As Object, e As RoutedEventArgs)
Dim a = Await SpacesPost("http://spaces.ru/friends/?name=Kryeker&sort=1" & "&p=" & 1)
End Sub
Public Async Function SpacesPost(URL As String, Optional body As String = "") As Task(Of String)
WebRequest1 = CType(WebRequest.Create(URL), HttpWebRequest)
Dim tempCookie As New CookieContainer
With WebRequest1
.ContentType = "application/x-www-form-urlencoded"
.Method = "POST"
.AllowAutoRedirect = False
.CookieContainer = Cookie1
.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"
End With
Dim postBytes As Byte() = Encoding.UTF8.GetBytes(body)
WebRequest1.ContentLength = postBytes.Length
Dim requestStream = Await WebRequest1.GetRequestStreamAsync
requestStream.Write(postBytes, 0, postBytes.Length)
requestStream.Close()
Dim response = CType(Await WebRequest1.GetResponseAsync, HttpWebResponse)
tempCookie.Add(response.Cookies)
Cookie1 = tempCookie
Return New StreamReader(response.GetResponseStream()).ReadToEnd()
End Function
Благодарю
Ответы
Всего ответов: 2
Номер ответа: 1
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #1
Добавлено: 22.03.13 20:48
Что именно натолкнуло тебя на эту мысль? Это? Await WebRequest1.GetRequestStreamAsync
А ничего что ты синхронного пишешь в него в UI треде?
А ничего что ты в том же UI треде синхронно получаешь ResposeStream и так же синхронного из него читаешь данные?
Тебя это не смущает?
Номер ответа: 2
Автор ответа:
Kryeker
Вопросов: 3
Ответов: 5
Профиль | | #2
Добавлено: 22.03.13 23:13
Спасибо. Я не знал этих вещей, работает.