DownloadStringAsync, чтобы получить текстовую строку?

Я пытаюсь создать приложение для Windows Phone 7.1, в основном конвертер валют. я использую DownloadStringAsync способ получить короткую строку, содержащую курс обмена с определенного сайта. Я тестировал в Visual Studio 2010, DownloadString работал просто отлично. Но не для телефонного приложения. Что мне нужно сделать здесь? Я не могу понять это.

Partial Public Class MainPage
Inherits PhoneApplicationPage
Dim webClient As New System.Net.WebClient
Dim a As String
Dim b As String
Dim result As String = Nothing
' Constructor
Public Sub New()
    InitializeComponent()
End Sub

Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
    a = "USD"
    b = "GBP"
    webClient = New WebClient
    Dim result As String = webClient.DownloadStringAsync(New Uri("http://rate-exchange.appspot.com/currency?from=" + a + "&to=" + b) as String)
    TextBox1.Text = result
End Sub

Конечный класс

1 ответ

Несколько вещей здесь не так:

  1. DownloadStringAsync не возвращает значение (void метод в терминах C#)
  2. Вы должны справиться с DownloadStringCompleted событие для WebClient переменная. Вы можете получить результат в обработчике события.

Вы можете изменить свой код на что-то вроде этого, чтобы вышеперечисленное работало:

Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
    a = "USD"
    b = "GBP"
    webClient = New WebClient
    'Add the event handler here
    AddHandler webClient.DownloadStringCompleted, AddressOf webClient_DownloadStringCompleted            
    Dim url As String = "http://rate-exchange.appspot.com/currency?from=" & a & "&to=" & b            
    webClient.DownloadStringAsync(New Uri(url))
End Sub

Private Sub webClient_DownloadStringCompleted(ByVal sender as Object,ByVal e as DownloadStringCompletedEventArgs)
    TextBox1.Text = e.result
End Sub

Просто используйте DownloadStringTaskAsync:

Using WebClient As WebClient = New WebClient
    Return Await WebClient.DownloadStringTaskAsync(New Uri(myurl))
End Using
Другие вопросы по тегам