Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Lianja) Async Methods Returning an ObjectDemonstrates 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.
// All Chilkat classes can be unlocked at once at the beginning of a program // by calling UnlockBundle. It requires a Bundle unlock code. loChilkatGlob = createobject("CkGlobal") llSuccess = loChilkatGlob.UnlockBundle("Anything for 30-day trial.") if (llSuccess <> .T.) then ? loChilkatGlob.LastErrorText release loChilkatGlob return endif loMailman = createobject("CkMailMan") // Set the POP3 server's hostname loMailman.MailHost = "pop.someMailServer.com" // Set the POP3 login/password and any other requirements.. loMailman.PopUsername = "myLogin" loMailman.PopPassword = "myPassword" loMailman.PopSsl = .T. loMailman.MailPort = 995 // Connect to the POP3 server: loTask = loMailman.Pop3BeginSessionAsync() if (loMailman.LastMethodSuccess = .F.) then ? loMailman.LastErrorText release loChilkatGlob release loMailman return endif // Start the background task. llSuccess = loTask.Run() if (not llSuccess) then ? loTask.LastErrorText release loTask release loChilkatGlob release loMailman return endif // Wait for the POP3 connect task to finish. // The .T./.F. returned by Wait applies to the Wait method call, not the task. lnMaxWaitMs = 30000 llSuccess = loTask.Wait(lnMaxWaitMs) if (not llSuccess or (loTask.StatusInt <> 7) or (loTask.TaskSuccess <> .T.)) then if (not llSuccess) then // The task.LastErrorText applies to the Wait method call. ? loTask.LastErrorText else // The ResultErrorText applies to the underlying task method call (i.e. the Pop3BeginSession) ? loTask.Status ? loTask.ResultErrorText endif release loTask release loChilkatGlob release loMailman return endif release loTask // Get the number of messages in the mailbox. loTask = loMailman.GetMailboxCountAsync() // To keep the example short, we'll skip handling failures. // The failures would be handled in the same way as shown above. llSuccess = loTask.Run() llSuccess = loTask.Wait(lnMaxWaitMs) lnNumMessages = loTask.GetResultInt() release loTask if (lnNumMessages = 0) then release loChilkatGlob release loMailman return endif loEmail = createobject("CkEmail") for i = 1 to lnNumMessages loTask = loMailman.FetchByMsgnumAsync(i) if (loMailman.LastMethodSuccess = .F.) then ? loMailman.LastErrorText release loChilkatGlob release loMailman release loEmail return endif llSuccess = loTask.Run() llSuccess = loTask.Wait(lnMaxWaitMs) if (not llSuccess or (loTask.StatusInt <> 7) or (loTask.TaskSuccess <> .T.)) then if (not llSuccess) then // The task.LastErrorText applies to the Wait method call. ? loTask.LastErrorText else // The ResultErrorText applies to the underlying task method call (i.e. the FetchByMsgnum) ? loTask.Status ? loTask.ResultErrorText endif release loTask release loChilkatGlob release loMailman release loEmail return endif // 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. llSuccess = loEmail.LoadTaskResult(loTask) release loTask if (not llSuccess) then ? loEmail.LastErrorText release loChilkatGlob release loMailman release loEmail return else ? loEmail.From + ": " + loEmail.Subject + Chr(10) endif next release loChilkatGlob release loMailman release loEmail |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.