Thread VB.Net Tutorial

Imports System.Threading
Module Module1
    Sub TaskA(ByVal state As Object)
        Dim I As Integer
        For I = 0 To 250
            System.Console.Write("A")
        Next
        Thread.Sleep(3000)
        CType(state, AutoResetEvent).Set()
    End Sub
    Sub TaskB(ByVal state As Object)
        Dim I As Integer
        For I = 0 To 250
            System.Console.Write("B")
        Next
        Thread.Sleep(3000)
        CType(state, AutoResetEvent).Set()
    End Sub
    Sub TaskC(ByVal state As Object)
        Dim I As Integer
        For I = 0 To 250
            System.Console.Write("C")
        Next
        Thread.Sleep(3000)
        CType(state, AutoResetEvent).Set()
    End Sub
    Sub Main()
        Dim AIsDone As New AutoResetEvent(False)
        Dim BIsDone As New AutoResetEvent(False)
        Dim CIsDone As New AutoResetEvent(False)
        ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf TaskA), AIsDone)
        ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf TaskB), BIsDone)
        ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf TaskC), CIsDone)
        Dim ThreadCount, ThreadPorts As Integer
        ThreadPool.GetAvailableThreads(ThreadCount, ThreadPorts)
        Console.WriteLine("Thread pool size {0}", ThreadCount)
        Console.WriteLine("Waiting for asynchronous threads to complete.")
        AIsDone.WaitOne()
        Console.WriteLine("A is done")
        BIsDone.WaitOne()
        Console.WriteLine("B is done")
        CIsDone.WaitOne()
        Console.WriteLine("C is done")
    End Sub
End Module
Thread pool size 25
Waiting for asynchronous threads to complete.
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCA is done
B is done
C is done