Visual Basic 6.0
Visual Basic 6.0
Async Methods Returning an Object
See more Async Examples
Demonstrates how to call an asynchronous method that returns an object. This example reads email from a POP3 server using the Async versions of the Chilkat methods.Chilkat Visual Basic 6.0 Downloads
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
Dim mailman As New ChilkatMailMan
' Set the POP3 server's hostname
mailman.MailHost = "pop.example.com"
' Set the POP3 login/password and any other requirements..
mailman.PopUsername = "myLogin"
mailman.PopPassword = "myPassword"
mailman.PopSsl = 1
mailman.MailPort = 995
' Connect to the POP3 server:
Dim task As ChilkatTask
Set task = mailman.Pop3BeginSessionAsync()
If (mailman.LastMethodSuccess = 0) Then
Debug.Print mailman.LastErrorText
Exit Sub
End If
' Start the background task.
success = task.Run()
If (Not success) Then
Debug.Print task.LastErrorText
Exit Sub
End If
' Wait for the POP3 connect task to finish.
' The 1/0 returned by Wait applies to the Wait method call, not the task.
Dim maxWaitMs As Long
maxWaitMs = 30000
success = task.Wait(maxWaitMs)
If (Not success Or (task.StatusInt <> 7) Or (task.TaskSuccess <> 1)) Then
If (Not success) Then
' The task.LastErrorText applies to the Wait method call.
Debug.Print task.LastErrorText
Else
' The ResultErrorText applies to the underlying task method call (i.e. the Pop3BeginSession)
Debug.Print task.Status
Debug.Print task.ResultErrorText
End If
Exit Sub
End If
' Get the number of messages in the mailbox.
Set task = mailman.GetMailboxCountAsync()
' To keep the example short, we'll skip handling failures.
' The failures would be handled in the same way as shown above.
success = task.Run()
success = task.Wait(maxWaitMs)
Dim numMessages As Long
numMessages = task.GetResultInt()
If (numMessages = 0) Then
Exit Sub
End If
Dim email As New ChilkatEmail
Dim i As Long
For i = 1 To numMessages
Set task = mailman.FetchByMsgnumAsync(i)
If (mailman.LastMethodSuccess = 0) Then
Debug.Print mailman.LastErrorText
Exit Sub
End If
success = task.Run()
success = task.Wait(maxWaitMs)
If (Not success Or (task.StatusInt <> 7) Or (task.TaskSuccess <> 1)) Then
If (Not success) Then
' The task.LastErrorText applies to the Wait method call.
Debug.Print task.LastErrorText
Else
' The ResultErrorText applies to the underlying task method call (i.e. the FetchByMsgnum)
Debug.Print task.Status
Debug.Print task.ResultErrorText
End If
Exit Sub
End If
' Each Chilkat object that can be a return value of an asynchronous task will
' have a method named LoadTaskResult. The object returned in the underlying
' asynchronous method call is retrieved by calling LoadTaskResult.
' To say it another way: The application will provide a pre-existing object of
' the desired return type (in this case it is an email object). This object is
' loaded by calling LoadTaskResult.
success = email.LoadTaskResult(task)
If (Not success) Then
Debug.Print email.LastErrorText
Exit Sub
Else
Debug.Print email.From & ": " & email.Subject & vbLf
End If
Next