Visual Basic .NET - Asynchronous Programming in VB.NET (Async and Await)

1. Introduction

Asynchronous programming in VB.NET allows a program to perform time-consuming tasks without stopping the entire application. It helps keep applications responsive, especially in Windows Forms, WPF, or web applications.

For example, when downloading data from the internet or reading a large file, the program normally waits until the task is completed. During that time, the user interface may freeze. Using Async and Await, the program can continue running other tasks while waiting for the operation to finish.


2. Why Asynchronous Programming is Important

In real-world applications, many operations take time:

  • Downloading data from a website

  • Reading or writing large files

  • Accessing a database

  • Calling a web API

If these operations run synchronously (one after another), the program becomes unresponsive. Asynchronous programming solves this problem by running long tasks in a non-blocking way.


3. Key Keywords: Async and Await

VB.NET uses two main keywords:

Async

  • Used before a method declaration.

  • It tells the compiler that the method contains asynchronous operations.

Await

  • Used inside an Async method.

  • It pauses the method execution until the awaited task completes.

  • It does not block the entire program.


4. Basic Example

Here is a simple example:

Imports System.Net.Http
Imports System.Threading.Tasks

Public Class Form1

    Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim result As String = Await DownloadDataAsync()
        MessageBox.Show(result)
    End Sub

    Private Async Function DownloadDataAsync() As Task(Of String)
        Dim client As New HttpClient()
        Dim response As String = Await client.GetStringAsync("https://example.com")
        Return response
    End Function

End Class

Explanation:

  • Button1_Click is marked as Async.

  • Await is used when calling DownloadDataAsync().

  • The UI does not freeze while downloading data.

  • The method DownloadDataAsync returns Task(Of String) instead of just String.


5. Task and Task(Of T)

In asynchronous programming:

  • Task represents an operation that does not return a value.

  • Task(Of T) represents an operation that returns a value of type T.

Example:

Private Async Function ExampleAsync() As Task
Private Async Function ExampleAsync() As Task(Of Integer)

6. Advantages of Async and Await

  1. Keeps the application responsive.

  2. Improves performance when handling multiple I/O operations.

  3. Makes code easier to read compared to older threading methods.

  4. Reduces complexity compared to manual thread management.


7. Important Rules

  • Await can only be used inside an Async method.

  • Avoid using Async Sub except for event handlers.

  • Always handle exceptions using Try-Catch inside async methods.

Example:

Try
    Dim result As String = Await DownloadDataAsync()
Catch ex As Exception
    MessageBox.Show("Error: " & ex.Message)
End Try

8. Conclusion

Asynchronous programming using Async and Await is an essential concept in modern VB.NET development. It allows programs to perform long-running tasks without freezing the application. Understanding this concept is important for building responsive desktop and web applications.