Lianja
Lianja
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 Lianja Downloads
llSuccess = .F.
// 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 (.T./.F.), get returned value by calling GetResultBool.
// For example..
loSock = createobject("CkSocket")
// --------------------------------------------------------------
// Synchronous call returning .T./.F.
llSuccess = loSock.Connect("example.com",443,.T.,5000)
// --------------------------------------------------------------
// Asynchronous call
loTask = loSock.ConnectAsync("example.com",443,.T.,5000)
// ...
loTask.Run()
// ...
// ...
// Get the status (.T./.F.) value returned by the synchronous method called in the background thread.
llSuccess = loTask.GetResultBool()
// --------------------------------------------------------------
// Synchronous call returning an integer
lnCount = loSock.ReceiveCount()
// --------------------------------------------------------------
// Asynchronous call
loTask = loSock.ReceiveCountAsync()
// ...
loTask.Run()
// ...
// ...
// Get the integer value returned by the synchronous method called in the background thread.
lnCount = loTask.GetResultInt()
// --------------------------------------------------------------
// Synchronous call returning an string
s = loSock.ReceiveString()
// --------------------------------------------------------------
// Asynchronous call
loTask = loSock.ReceiveStringAsync()
// ...
loTask.Run()
// ...
// ...
// Get the string value returned by the synchronous method called in the background thread.
s = loTask.GetResultString()
// --------------------------------------------------------------
// Synchronous call returning an object
loConnection = loSock.AcceptNextConnection(5000)
// --------------------------------------------------------------
// Asynchronous call
loTask = loSock.AcceptNextConnectionAsync()
// ...
loTask.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).
loAcceptedConnection = createobject("CkSocket")
if (loTask.TaskSuccess = .T.) then
llSuccess = loAcceptedConnection.LoadTaskResult(loTask)
endif
release loSock
release loAcceptedConnection