I scoured the interwebs looking for a VB.NET simple Async Await example, and kind of came up empty. So, I decided to try to use bits and pieces of the examples I could find to roll my own.
The background here is that I am working on an application that accesses resources on the internet, and did not want to block the UI while the communications code was running.
Here is the code that I came up with:
Async Function GetDetails(theID As String) As Task Dim url As String url = GET_DETAILS_URL & "?theid=" & theID Dim request As WebRequest = WebRequest.Create(url) Dim response As WebResponse = Await request.GetResponseAsync() Dim dataStream As Stream = response.GetResponseStream() Dim reader As New StreamReader(dataStream) Dim responseFromServer As String = reader.ReadToEnd() reader.Close() response.Close() ' do something here with responseFromServer End Function Async Sub lstItems_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lstItems.SelectedIndexChanged Dim idx As Integer = lstItems.SelectedIndex ' get the selected item Dim theItem As Object = itemsList(idx) Dim theItemID As String = theItem.itemID.ToString() Await GetDetails(theItemID) End Sub
BTW, Happy Bennington Battle Day to our Green Mountain friends.