PowerBuilder
PowerBuilder
Understanding Async Function Return Values
See more Async Examples
Explains how to get the return value of the function called synchonously in the background thread.Chilkat PowerBuilder Downloads
integer li_rc
integer li_Success
oleobject loo_Sock
oleobject loo_Task
integer li_Count
string s
oleobject loo_Connection
oleobject loo_AcceptedConnection
li_Success = 0
// 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
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
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