WebClientクラスを使用して async と await の基本的な使い方の説明を記載します。

使用するメソッドは、同期(DownloadString)、非同期(DownloadStringTaskAsync)を使用して説明します。

同期メソッドDownloadString を使用してダウンロード

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim url As Uri = New Uri("http://microsoft.com")

    Dim client = New WebClient()

    Debug.WriteLine("--- Start ---")
    Dim s = client.DownloadString(url)
    Debug.WriteLine(s)
    Debug.WriteLine("--- End ---")
End Sub

表示結果は

--- Start ---
<html><head> ・・・(省略)
--- End ---

次に

非同期メソッドDownloadStringTaskAsync を使用してダウンロード

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim url As Uri = New Uri("http://microsoft.com")

    Dim client = New WebClient()

    Debug.WriteLine("--- Start ---")
    Dim s = client.DownloadStringTaskAsync(url)
    Debug.WriteLine(s)
    Debug.WriteLine("--- End ---")
End Sub

表示結果

--- Start ---
System.Threading.Tasks.Task`1[System.String]
--- End ---

ダウンロードされた内容が取得できません。

そこで、Async と Await を使用して内容を取得します。

非同期での Async と Awaitの使用方法

Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim url As Uri = New Uri("http://microsoft.com")

    Dim client = New WebClient()

    Debug.WriteLine("--- Start ---")

    Dim task As Task(Of String) = client.DownloadStringTaskAsync(url)
    Debug.WriteLine(task)
    Debug.WriteLine("--- End ---")

    Debug.WriteLine("--- Await Start ---")
    Dim s As String = Await task            'ここで処理待ちをする
    Debug.WriteLine(s)
    Debug.WriteLine("--- Await End ---")
End Sub

表示結果

--- Start ---
System.Threading.Tasks.Task`1[System.String]
--- End ---
--- Await Start ---
<html><head> ・・・省略

--- Await End ---

上記のいらないところを消して簡単にすると

Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim url As Uri = New Uri("http://microsoft.com")

    Dim client = New WebClient()
    Dim s As String = Await client.DownloadStringTaskAsync(url)
    Debug.WriteLine(s)
End Sub