Visual Basic Improvements in Visual Studio 11: Listing 3.

An incorrect pattern for consuming Async functions

Private Sub IncorrectCallerAsync()
    'Illustrates a usage pattern for Async and Await that will fail
    '"Method completed:" displays 1-2 seconds before "HTML received:" message
    wb1.DocumentText = ""
    Dim HTMLtask = GetHTMLAsync(msdnURL)
    If (HTMLtask.Status = TaskStatus.RanToCompletion) Then
      'This never executes since task returns TaskStatus.WaitingForActivation
      Dim HTML As String = HTMLtask.Result
      wb1.Document.Write(HTML)
      lblElapsedSynch.Text = "Page 1 Updated: " & Now.TimeOfDay.ToString
    End If
    lblElapsedSynch.Text = "Method completed: " & Now.TimeOfDay.ToString
  End Sub
  Private Async Function GetHTMLAsync(webPageURL As String) As Task(Of String)
    Dim HTMLcontent = String.Empty
    Try
      Dim response = Await New System.Net.Http.HttpClient().GetAsync(New System.Uri(webPageURL))
      HTMLcontent = response.Content.ReadAsString
      lblElapsedAsync.Text = "HTML received: " & Now.TimeOfDay.ToString
    Catch ex As Exception
      Dim msg = "Exception: {0}" & vbCrLf & vbCrLf & "{1}"
      MessageBox.Show(String.Format(msg, ex.Message, ex.InnerException.Message))
    End Try
    Return HTMLcontent
  End Function

About the Author

Joe Kunk is a Microsoft MVP in Visual Basic, three-time president of the Greater Lansing User Group for .NET, and developer for Dart Container Corporation of Mason, Michigan. He's been developing software for over 30 years and has worked in the education, government, financial and manufacturing industries. Kunk's co-authored the book "Professional DevExpress ASP.NET Controls" (Wrox Programmer to Programmer, 2009). He can be reached via email at [email protected].

comments powered by Disqus

Featured

  • Microsoft's New Programming Language for Excel Now Turing Complete

    Microsoft, which calls its Excel spreadsheet a programming language, reports that an effort called LAMBDA to make it even more of a programming language is paying off, recently being deemed Turing complete.

  • New Visual Studio Razor Editor 'Close to Being Ready' for Blazor and Other Projects

    The experimental Razor editor for Visual Studio introduced last summer has been updated and is "close to being ready for normal daily development."

  • Microsoft Updates 'Must Have' Xamarin Community Toolkit

    The Xamarin Community Toolkit provides all kinds of effects, views and helpers to complement mobile app development with Microsoft's recently released, open source, cross-platform Xamarin.Forms 5.

  • JetBrains Unveils Plans for WinForms, WPF and More in Rider .NET IDE

    JetBrains announced plans for Windows Forms, Windows Presentation Foundation (WPF), ASP.NET and more tooling in the next release of its popular Rider IDE for .NET development.

Upcoming Events