Sample code for 30+ languages & platforms
Visual Basic 6.0

Thread Pool Size

See more Async Examples

Demonstrates how to set the maximum number of threads in Chilkat's thread pool manager. Also demonstrates how to set a thread pool log file for help in diagnosing unexpected problems.

Chilkat Visual Basic 6.0 Downloads

Visual Basic 6.0
Dim success As Long
success = 0

' This example assumes the Chilkat API to have been previously unlocked.
' See Global Unlock Sample for sample code.

success = 0

' Set the maximum number of threads in the Chilkat thread pool to 12.
' This means that no more than 12 background worker threads will exist simultaneously.
' If more than 12 tasks are queued then some must wait for a worker thread to become free.
' Note: The Chilkat thread pool manager thread is a thread distinct from the
' worker threads.  It starts when the 1st asynchronous task is Run. 
Dim glob As New ChilkatGlobal
glob.MaxThreads = 12

' Also, the ThreadPoolLogPath can be set to cause the thread pool manager thread to
' keep a log file. This is for the purpose of debugging if unexpected problems occur.
glob.ThreadPoolLogPath = "/home/users/chilkat/logs/threadPoolLog.txt"

Dim http1 As New ChilkatHttp
Dim http2 As New ChilkatHttp
Dim http3 As New ChilkatHttp

Dim url1 As String
url1 = "http://www.marcusmiller.com/"
Dim url2 As String
url2 = "http://www.tromboneshorty.com/"
Dim url3 As String
url3 = "http://www.jamesmorrison.com/"

' Call the async version of the QuickGetStr method to return a task object.
' The task object is loaded, but is in the Inert state -- meaning it is
' not yet scheduled to run on Chilkat's background thread pool.
Dim task1 As ChilkatTask
Set task1 = http1.QuickGetStrAsync(url1)
If (http1.LastMethodSuccess = 0) Then
    Debug.Print http1.LastErrorText
    Exit Sub
End If

Dim task2 As ChilkatTask
Set task2 = http2.QuickGetStrAsync(url2)
If (http2.LastMethodSuccess = 0) Then
    Debug.Print http2.LastErrorText

    Exit Sub
End If

Dim task3 As ChilkatTask
Set task3 = http3.QuickGetStrAsync(url3)
If (http3.LastMethodSuccess = 0) Then
    Debug.Print http3.LastErrorText

    Exit Sub
End If

' At this point we have 3 task objects, each loaded with a Chilkat method call.
' Note: At this point no background threads are running.  The thread pool manager
' thread is not started -- it will start when the very first task is Run.

' Schedule each task for running on the thread pool.  This changes each task's state
' from Inert to Live. The thread pool manager thread starts with the 1st task queued.
' If the Global.ThreadPoolLogPath property was set, then
' the log file would be created (or appended) at this point.
success = task1.Run()
' Assuming success for brevity...
success = task2.Run()
success = task3.Run()

' The application is now free to do anything else
' while the HTML at the URL's are being downloaded in background threads.

' In this case, we'll just wait for all three tasks to finish.
' All three tasks are running simultaneously in separate background threads.
' We can wait for each in any order.  If Wait is called and the task has already
' finished (or been canceled), then the Wait method returns immediately.
Dim maxWaitMs As Long
maxWaitMs = 20000
success = task1.Wait(maxWaitMs)
success = task2.Wait(maxWaitMs)
success = task3.Wait(maxWaitMs)
' Assuming success for brevity...

Dim err As String
err = "Task failed or canceled"
Dim html1 As String
html1 = err
Dim html2 As String
html2 = err
Dim html3 As String
html3 = err

' Now get the HTML downloaded in each task:
If ((task1.StatusInt = 7) And (task1.TaskSuccess = 1)) Then
    html1 = task1.GetResultString()
End If

If ((task2.StatusInt = 7) And (task2.TaskSuccess = 1)) Then
    html2 = task2.GetResultString()
End If

If ((task3.StatusInt = 7) And (task3.TaskSuccess = 1)) Then
    html3 = task3.GetResultString()
End If

Debug.Print html1
Debug.Print "----"
Debug.Print html2
Debug.Print "----"
Debug.Print html3
Debug.Print "----"