![]() |
Chilkat • HOME • Android™ • AutoIt • C • C# • C++ • Chilkat2-Python • CkPython • Classic ASP • DataFlex • Delphi DLL • Go • Java • Node.js • Objective-C • PHP Extension • Perl • PowerBuilder • PowerShell • PureBasic • Ruby • SQL Server • Swift • Tcl • Unicode C • Unicode C++ • VB.NET • VBScript • Visual Basic 6.0 • Visual FoxPro • Xojo Plugin
(Visual FoxPro) 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.
LOCAL loChilkatGlob LOCAL lnSuccess LOCAL loMailman LOCAL loTask LOCAL lnMaxWaitMs LOCAL lnNumMessages LOCAL loEmail LOCAL i * All Chilkat classes can be unlocked at once at the beginning of a program * by calling UnlockBundle. It requires a Bundle unlock code. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Global') loChilkatGlob = CreateObject('Chilkat.Global') lnSuccess = loChilkatGlob.UnlockBundle("Anything for 30-day trial.") IF (lnSuccess <> 1) THEN ? loChilkatGlob.LastErrorText RELEASE loChilkatGlob CANCEL ENDIF * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.MailMan') loMailman = CreateObject('Chilkat.MailMan') * 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 = 1 loMailman.MailPort = 995 * Connect to the POP3 server: loTask = loMailman.Pop3BeginSessionAsync() IF (loMailman.LastMethodSuccess = 0) THEN ? loMailman.LastErrorText RELEASE loChilkatGlob RELEASE loMailman CANCEL ENDIF * Start the background task. lnSuccess = loTask.Run() IF (NOT lnSuccess) THEN ? loTask.LastErrorText RELEASE loTask RELEASE loChilkatGlob RELEASE loMailman CANCEL ENDIF * Wait for the POP3 connect task to finish. * The 1/0 returned by Wait applies to the Wait method call, not the task. lnMaxWaitMs = 30000 lnSuccess = loTask.Wait(lnMaxWaitMs) IF (NOT lnSuccess OR (loTask.StatusInt <> 7) OR (loTask.TaskSuccess <> 1)) THEN IF (NOT lnSuccess) 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 CANCEL 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. lnSuccess = loTask.Run() lnSuccess = loTask.Wait(lnMaxWaitMs) lnNumMessages = loTask.GetResultInt() RELEASE loTask IF (lnNumMessages = 0) THEN RELEASE loChilkatGlob RELEASE loMailman CANCEL ENDIF * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Email') loEmail = CreateObject('Chilkat.Email') FOR i = 1 TO lnNumMessages loTask = loMailman.FetchByMsgnumAsync(i) IF (loMailman.LastMethodSuccess = 0) THEN ? loMailman.LastErrorText RELEASE loChilkatGlob RELEASE loMailman RELEASE loEmail CANCEL ENDIF lnSuccess = loTask.Run() lnSuccess = loTask.Wait(lnMaxWaitMs) IF (NOT lnSuccess OR (loTask.StatusInt <> 7) OR (loTask.TaskSuccess <> 1)) THEN IF (NOT lnSuccess) 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 CANCEL 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. lnSuccess = loEmail.LoadTaskResult(loTask) RELEASE loTask IF (NOT lnSuccess) THEN ? loEmail.LastErrorText RELEASE loChilkatGlob RELEASE loMailman RELEASE loEmail CANCEL ELSE ? loEmail.From + ": " + loEmail.Subject + CHR(10) ENDIF NEXT RELEASE loChilkatGlob RELEASE loMailman RELEASE loEmail |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.