Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 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
Ответов: 4242
 Web-сайт: all-oracle.ru
 Профиль | | #1
Добавлено: 22.03.13 20:48
по идее она должна выполниться асинхронно

Что именно натолкнуло тебя на эту мысль? Это? Await WebRequest1.GetRequestStreamAsync
А ничего что ты синхронного пишешь в него в UI треде?
  1.  
  2. requestStream.Write(postBytes, 0, postBytes.Length)


А ничего что ты в том же UI треде синхронно получаешь ResposeStream и так же синхронного из него читаешь данные?
  1. response.GetResponseStream()).ReadToEnd()

Тебя это не смущает?

Ответить

Номер ответа: 2
Автор ответа:
 Kryeker



Вопросов: 3
Ответов: 5
 Профиль | | #2 Добавлено: 22.03.13 23:13
Спасибо. Я не знал этих вещей, работает.

Ответить

Страница: 1 |

Поиск по форуму





© Copyright 2002-2011 VBNet.RU | Пишите нам