dlofrodloh
dlofrodloh

Reputation: 1744

How to wait for get request without freezing client

I have a simple button which sends a get request to retrieve a txt file on my website. Problem is it freezes the application while retrieving the info. How can I make it so the application doesn't freeze while waiting for the result?

Private Sub cmd_ClickMe_Click(sender As Object, e As EventArgs) Handles cmd_ClickMe.Click
    Dim request As String = String.Format("http://www.*****/database/test.txt")
    Dim webClient As New System.Net.WebClient
    Dim result As String = webClient.DownloadString(request)

    MessageBox.Show(result)
End Sub

I've also tried the following but it doesn't work (says "webClient.DownloadStringAsync(myUri)" does not produce a value:

Private Sub cmd_ClickMe_Click_1(sender As Object, e As EventArgs) Handles cmd_ClickMe.Click
    Dim request As String = String.Format("http://www.****.com/database/test.txt")
    Dim webClient As New System.Net.WebClient
    Dim myUri As Uri = New Uri(request)

    Dim result As String = webClient.DownloadStringAsync(myUri)

    MessageBox.Show(result)
End Sub

Upvotes: 0

Views: 1088

Answers (1)

Postlagerkarte
Postlagerkarte

Reputation: 7117

Use DownloadStringAsync(Uri) instead of the DownloadString(uri).

The DownloadStringAsync method does not block the calling thread.

Here is an example how to use it:

    Dim wc As New WebClient
    '  Specify that you get alerted 
    '  when the download completes.
    AddHandler wc.DownloadStringCompleted, AddressOf AlertStringDownloaded

    Dim uri As New Uri("http:\\changeMe.com")  'Pass the URL to here. This is just an example
    wc.DownloadStringAsync(uri)

End Sub

Public Shared Sub AlertStringDownloaded(ByVal sender As Object, ByVal e As DownloadStringCompletedEventArgs)

    '  If the string request went as planned and wasn't cancelled:
    If e.Cancelled = False AndAlso e.Error Is Nothing Then

        Dim myString As String = CStr(e.Result)   'Use e.Result to get the String
        MessageBox.Show(myString)
    End If

End Sub

Upvotes: 3

Related Questions