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
(PowerBuilder) Understanding Async Function Return ValuesSee more Async ExamplesExplains how to get the return value of the function called synchonously in the background thread.
integer li_rc oleobject loo_Sock integer li_Success oleobject loo_Task integer li_Count string s oleobject loo_Connection oleobject loo_AcceptedConnection // Some Chilkat functions can be called asynchronously. // If a function "Func" can be called asynchronously, there will be a corresponding "FuncAsync" function that returns a Task object. // // When Task.Run is called, the synchronous "Func" runs in a background thread. // // For Chilkat methods that return a status (1/0), get returned value by calling GetResultBool. // For example.. loo_Sock = create oleobject // Use "Chilkat_9_5_0.Socket" for versions of Chilkat < 10.0.0 li_rc = loo_Sock.ConnectToNewObject("Chilkat.Socket") if li_rc < 0 then destroy loo_Sock MessageBox("Error","Connecting to COM object failed") return end if // -------------------------------------------------------------- // Synchronous call returning 1/0 li_Success = loo_Sock.Connect("example.com",443,1,5000) // -------------------------------------------------------------- // Asynchronous call loo_Task = loo_Sock.ConnectAsync("example.com",443,1,5000) // ... loo_Task.Run() // ... // ... // Get the status (1/0) value returned by the synchronous method called in the background thread. li_Success = loo_Task.GetResultBool() // -------------------------------------------------------------- // Synchronous call returning an integer li_Count = loo_Sock.ReceiveCount() // -------------------------------------------------------------- // Asynchronous call loo_Task = loo_Sock.ReceiveCountAsync() // ... loo_Task.Run() // ... // ... // Get the integer value returned by the synchronous method called in the background thread. li_Count = loo_Task.GetResultInt() // -------------------------------------------------------------- // Synchronous call returning an string s = loo_Sock.ReceiveString() // -------------------------------------------------------------- // Asynchronous call loo_Task = loo_Sock.ReceiveStringAsync() // ... loo_Task.Run() // ... // ... // Get the string value returned by the synchronous method called in the background thread. s = loo_Task.GetResultString() // -------------------------------------------------------------- // Synchronous call returning an object loo_Connection = loo_Sock.AcceptNextConnection(5000) // -------------------------------------------------------------- // Asynchronous call loo_Task = loo_Sock.AcceptNextConnectionAsync() // ... loo_Task.Run() // ... // ... // Get the object returned by the synchronous method called in the background thread. // We do this a little differently. We create an new object of the same type, // and then load it with the returned object (assuming it was not null). loo_AcceptedConnection = create oleobject // Use "Chilkat_9_5_0.Socket" for versions of Chilkat < 10.0.0 li_rc = loo_AcceptedConnection.ConnectToNewObject("Chilkat.Socket") if loo_Task.TaskSuccess = 1 then li_Success = loo_AcceptedConnection.LoadTaskResult(loo_Task) end if destroy loo_Sock destroy loo_AcceptedConnection |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.